This repo contains material for a course for teaching Haskell and functional programming.
In this course we will learn Haskell by building small functional programming languages in Haskell. The languages will start out very small, and their implementations naive. But, the languages near the end of the course should hopefully support a nice subset of the features in Haskell, and the implementations of those languages will use more a more idiomatic Haskell style (and use more features).
If you want to follow along, the languages should be learned in the following order:
- AE - arithmetic expression
- LAE - AE with
let
expressions - UntypedLC - The untyped lambda calculus
- ... more to come soon ...
For any of the languages you should read files in this order:
- AST.hs
- Parser.hs (not strictly necessary)
- Interp.hs
- .hs (where Language is the name of the language)