# sapling ## Introduction sapling is a "micro-language" that [I'm](https://eversole.co) working on to investigate [Tree Calculus](https://github.com/barry-jay-personal/typed_tree_calculus/blob/main/typed_program_analysis.pdf) . It offers a minimal amount of syntax sugar yet provides a complete and intuitive programming environment. Sapling offers: - `t` operator behaving by the rules of Tree Calculus - Function ("variable") definitions - Lambda abstractions - List, Number, and String literals ## What does it look like? ``` -- Anything after `--` on a line is a comment -- We can define functions or "variables" as tree calculus values false = t _ = t true = t t -- We can define functions as lambda expressions that are eliminated to tree -- calculus terms. id = (\a : a) -- t (t (t t)) t triage = (\a b c : t (t a b) c) triage = (\a b c : t (t a b) c) -- Intensionality !!! test = triage "Leaf" (\_ : "Stem") (\_ _ : "Fork") -- REPL -- `sapling <` is the input prompt -- `sapling >` is the Tree Calculus form output. Most are elided below. -- `DECODE -:` is an attempt to interpret the TC output as strings/numbers. sapling < test t sapling > Fork (Fork Leaf (Fork ...) ... ) DECODE -: "Leaf" sapling < test (t t) DECODE -: "Stem" sapling < test (t t t) DECODE -: "Fork" sapling < map (\i : listConcat i " is super cool!") [("He") ("She") ("Everybody")] DECODE -: ["He is super cool!", "She is super cool!", "Everybody is super cool!"] ``` ## Installation You can easily build and/or run this project using [Nix](https://nixos.org/download/). - Build REPL binary: `nix build git+https://git.eversole.co/James/sapling` - Run REPL: `nix run git+https://git.eversole.co/James/sapling` ## Acknowledgements Tree Calculus was discovered by [Barry Jay](https://github.com/barry-jay-personal/blog). [treecalcul.us](https://treecalcul.us) is an excellent website with an intuitive playground created by [Johannes Bader](https://johannes-bader.com/) that introduced me to Tree Calculus. If sapling sounds interesting but compiling this repo sounds like a hassle, you should check out his site.