being the lecture materials and exercises for the 2018/19 session of CS410 Advanced Functional Programming at the University of Strathclyde
-
Check if you're using bash $ echo $0
-
If using bash: Add "export PATH=$HOME/.cabal/bin:$PATH" to the bottom of your .profile file if it isn't already there. Else if using tcsh: Add "set path = ($home/.cabal/bin $path)" to the bottom of your .cshrc file if it isn't already there.
-
$ cabal update
-
$ cabal install alex
-
$ cabal install cpphs
-
$ cabal install happy
-
$ cabal install Agda
-
$ agda-mode setup
-
$ emacs test.agda -- You should see an Agda menu and (Agda) in the mode line.
-
$ git clone https://github.com/pigworker/CS410-18 -- You should find the files from the lectures, and more as they appear.
- Exercise 1: Order-Preserving Embeddings
- Tuesday 19 September Programs and Proofs
- Friday 22 September more Programs and Proofs, Introducing "with"
- Tuesday 26 September Proof by Induction
- Friday 29 September Sigma, Difference, Vector Take
- Tuesday 3 October How Rewrite Works
- Friday 6 October A Comedy of (Entirely Non-Deliberate) Errors
- Tuesday 10 October "Dominoes", no really, this time
- Friday 13 October Functors
- Tuesday 17 October From Functors to Monads
- Friday 20 October Natural Transformations and Monads
- Tuesday 24 October From Monads to Input/Output
- Friday 27 October How to Run a Program (and come a-cropper) bug report
- Tuesday 31 October Monads on Indexed Sets (Ex2)
- Friday 3 November What is an Application?
- Tuesday 7 November Coinduction and Coalgebras
- Friday 10 November Polynomial Data and Codata
- Tuesday 14 November A Polynomial Universe
- Friday 17 November The Zipper (Differentiating Polynomial Types)
- SpaceMonads! my keynote from CodeMesh 2016, on which Ex2 is based