Stand-in Language
The Non-Turing Complete Language that helps you reason about termination time and other metrics
A virtual machine with a simple grammar evolved from simply typed lambda calculus, that eventually will have powerful static checking and an optimizing backend.
Warning
This proyect 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.
Quick Start
- Clone this repository and change directory to it:
$ git clone https://github.com/sfultong/stand-in-language.git $ cd stand-in-language
- Install Nix:
$ curl https://nixos.org/nix/install | sh
- Enter a Nix shell. This will setup an enviroment where all external dependancies will be available (such as
cabal
for building):$ nix-shell shell.nix
- Build the proyect:
$ cabal v2-build
- Run the tictactoe example and start playing with a friend:
$ cabal v2-run sil-exe
Running your own SIL code
- Create your own file with the sil code
- Modify the last uncommented line to reference your file.
Strict.readFile "<your-sil-code-file>.sil" >>= runMain
- Run:
$ cd <your/local/proyect/location>/stand-in-language $ nix-shell shell.nix $ cabal v2-build $ cabal v2-run sil-exe
Contributing
If you'd like to contribute, please fork the repository and use a feature branch. Pull requests are warmly welcome.
Links
- 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
Licensing
The code in this project is licensed under the Apache License 2.0. For more information, please refer to the LICENSE file.