A minimal Lisp-like language interpreter in Haskell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Initial Mar 25, 2018
src Initial Mar 25, 2018
.gitignore Initial Mar 25, 2018


A minimal Lisp-like language interpreter in Haskell

A course project of Functional Programming at Tsinghua University in the fall semester of 2016.


  • Purely functional
  • Number, Boolean, pair types and built-in functions.
  • Lexical scope (let assignment)
  • Fully functional lambda calculus

Non-features :(

  • No control flow with native Boolean type. (Use Church encoding, though you have to re-invent everything and you won't get neat output).
  • No recursion. (Use Y combinator if you need recursion)


cd src
cabal build
dist/build/ki -i FILE # Interpret FILE and write result to stdout
dist/build/ki --repl # Open in REPL mode

See docs/README.md (Chinese) for details.

See examples for sample programs.

Technical Details

See docs/report.md (Chinese).