- Haskell Platform
- Emacs
- git
- cabal update
- cabal install Agda
- agda-mode setup
- git clone https://github.com/UlfNorell/agda-prelude
- git clone https://github.com/UlfNorell/agda-summer-school
- cd agda-prelude/agda-ffi
- cabal install
- M-x agda2-mode
- M-x customize-group agda2
- Add the absolute path to agda-prelude/src to Include Dirs (do not remove "." from the list)
- Open agda-summer-school/exercises/Lambda.agda in Emacs
- Hit
C-c C-l
to type check - Hit
C-c C-x C-c
to compile - You should now have an executable Lambda in exercises/
- Run
./Lambda example.lam
. This should print a desugared lambda term and the result of running it through the SECD machine.
- Agda Wiki
- Mailing list
- IRC channel #agda on freenode
doc/AgdaCheatSheet.agda
contains a number of small examples showing some of the features of Agda.doc/EmacsCheatSheet.html
lists the most commonly used Emacs mode commands.- Browse the library. Use
M-.
ormiddle mouse
to jump to the definitions of library functions.
exercises/Lists.agda
- Bonus:
exercises/Grep.agda
exercises/Term.agda
exercises/Term/Eval.agda
exercises/TypeCheck.agda
- Copy
exercises/SECD/Unchecked.agda
toexercises/SECD/StackSafe.agda
and add types to ensure stack safety. - Copy your stack safe SECD machine to
exercises/SECD/TypeSafe.agda
and add type safety (running well-typed terms). - Change the compiler in
exercises/SECD/Compiled.agda
to compile well-typed terms and adapt your type safe SECD machine to run the compiled terms. - Bonus (hard): Track semantics in the types. In the end you should have a run function that is guaranteed to compute a value corresponding to
eval t
for an input termt
.
- Add more features to the lambda calculus (natrec, booleans, ...).
- Invent your own exercises.
Git commands for keeping fork up-to-date with upstream repo
git remote add upstream [email protected]:UlfNorell/agda-summer-school.git
git fetch upstream
git merge upstream/OPLSS
git push origin OPLSS