A simple but robust virtual machine
A virtual machine with a simple grammar evolved from simply typed lambda calculus, that eventually will have powerful static checking and an optimizing backend.
This project is in active development. Do expect bugs and general trouble, and please let us know if you run into any by creating a new issue if one does not already exist.
- Clone this repository and change directory to it:
$ git clone https://github.com/Stand-In-Language/stand-in-language.git $ cd stand-in-language
- Install Nix:
$ curl https://nixos.org/nix/install | sh
- Optional (reduces build time by using telomare's cache):
# Install cachix with nix-env or adding `cachix` to your `/etc/nixos/configuration.nix`'s' `environment.systemPackages` if in NixOS. $ nix-env -iA cachix -f https://cachix.org/api/v1/install $ cachix use telomare
- Enter a Nix shell. This will setup an environment where all external dependencies will be available (such as
cabal
for building):$ nix-shell shell.nix
- Build the project:
$ cabal new-build
- Run the tictactoe example and start playing with a friend (or run your own telomare file):
$ cabal new-run telomare -- tictactoe.tel
- Profit!
There is a known issue (#7) for getting a repl.
To get around it, you should copy libgc.so.1
(provided by the bohem
garbage collector) into your repository (telomare/lib is a good choice) and rename it to libgc.so
. You will also need to reference it on telomare.cabal
under the library
stanza. Be sure to use the complete path for libgc.so
on telomare.cabal
(a commented version on telomare.cabal
is provided as an example).
- Run:
$ cd <your/local/proyect/location>/telomare $ nix-shell shell.nix $ cabal new-build $ cabal new-run telomare-mini-repl -- --haskell
- Profit!
If you'd like to contribute, please fork the repository and use a feature branch. Pull requests are warmly welcome.
- A Better Model of Computation by Sfultong
- SIL: Explorations in non-Turing Completeness by Sfultong
- Deconstructing Lambdas, Closures and Application by Sfultong
- Join the community's chat
The code in this project is licensed under the Apache License 2.0. For more information, please refer to the LICENSE file.