SKI-Combinators Calculus Interpreter.
This is an interpreter made for anyone who might be interested in experimenting with the SKI-combinators calculus.
Supports environment variables for SKI-terms, showing the contents of an environtment variable, displaying the list of environment variables, checking for syntactic same-ness, evaluating n-steps at a time (in-place, for environment variables), left-most reduction and right-most reduction.
I'll be adding a couple more features, eventually.
Haskell and Cabal should both be installed.
cabal build
cabal run
Type :?, :h or :help for help within the program.
| Syntax | Semantics |
|---|---|
| S | The S-Combinator. |
| K | The K-Combinator. |
| I | The I-Combinator. |
| t1 t2 | An application. It packs pairs of terms. It's useful for packing terms into a single "thing" or manipulating the order of the terms. |
| x | A variable. Must be lowercase, and can end on any amount of primes. |
- I x -> x
- K x y -> x
- S x y z -> (x z) (y z)
Where x, y and z can be any SKI-Combinators term.
These are the weak-reduction (->w) rules for combinator terms.
Applications are conventionally left associative.
There's no need to put spaces in-between combinators, as they do not share names.
Do not forget to report any bugs. Contact me, otherwise you can create a new issue on this repository. Thanks!