chatziko / lci

A lambda calculus interpeter
https://www.chatzi.org/lci/
GNU General Public License v2.0
64 stars 7 forks source link

run-tests

LCI

LCI is an interpreter for the lambda calculus. It supports many advanced features such as recursion, user-defined operators and multiple evaluation strategies, all based on the pure calculus. It is free software licenced under the GNU General Public Licence (GPL).

Try it online

LCI can run in a browser via WebAssembly. Try the demo!

Features

LCI can be considered a small (but powerfull) functional progamming language based on the pure lambda-calculus. Its features include:

All features are implemented in the pure lambda calculus. To demonstrate them, there is an implementation of the N-Queens problem (queens.lci) in a way that reminds of Haskell syntax.

Install

From source

The latest version is available here. To install extract the archive, cd to that directory and run:

cmake -B build
cd build && make
sudo make install

This will install the lci executable in /usr/local/bin and .lcirc, queens.lci in /usr/local/share/lci. You can install then in a different location by passing -DCMAKE_INSTALL_PREFIX=<dir> to cmake.

Using Homebrew on OSX

Install Homebrew and run:

brew install lci

Binaries for Windows

Windows binaries are available here. Simply extract and run the lci executable.

Building for WebAssembly

The browser version can be built with emscripten. You first need to build make_dparser with a normal build, then build again with emcmake. The build is created under build/html/dist.

mkdir build && cd build
cmake ..
make make_dparser

rm CMakeCache.txt
emcmake cmake ..
emmake make

Contribution

If you have found a bug please report it. Also feel free to send pull requests, or suggest features.

Documentation

LCI's documentation covers most of the program's features and explains various topics concerning the lambda-calculus