This repository contains implementations of programming languages of increasing complexity in Haskell.
Every langauge implementation is presented as a Stack project. Front-ends are implemented using Parsec.
The idea is also to iteratively use more involved Haskell features. These features, while not mandatory, greatly aid in easing the code complexity when working with higher level constructs.
The languages implemented are (in ascending complexity)
arithmetic-expressions
- A calculatorlet-expressions
- A caltulator with let expressionsimperative
- Program is a sequence of integer operations, including variable assignmentimperative-ii
- Adds functions toimperative
typed-imperative
- Imperative language withint
,bool
,string
. Includes a typechecker.