Skip to content

Latest commit

 

History

History
32 lines (21 loc) · 920 Bytes

README.md

File metadata and controls

32 lines (21 loc) · 920 Bytes

A minimal Lisp-like language interpreter in Haskell

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

Features

  • 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)

Usage

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).