71653311cef09635a911dfa12b987d08acc37b68
tricu
Introduction
tricu (pronounced "tree-shoe") is a programming language experiment in Haskell. It is fundamentally based on the application of Triage Calculus, an extended form of Tree Calculus, terms, but minimal syntax sugar is included.
tricu is the word for "tree" in Lojban: (x1) is a tree of species/cultivar (x2).
Acknowledgements
Tree Calculus was discovered by Barry Jay. The addition of Triage rules were suggested by Johannes Bader. Johannes is also the creator of treecalcul.us which has a great intuitive code playground using his language LambAda.
REPL examples
tricu < -- Anything after `--` on a single line is a comment
tricu < id = (a : a) -- Lambda abstraction is eliminated to tree calculus terms
tricu < head (map (i : append i " world!") [("Hello, ")])
tricu > "Hello, world!"
tricu < id (head (map (i : append i " world!") [("Hello, ")]))
tricu > "Hello, world!"
tricu < -- Intensionality! We can inspect the structure of a function or data.
tricu < triage = (a b c : t (t a b) c)
tricu < test = triage "Leaf" (z : "Stem") (a b : "Fork")
tricu < test (t t)
tricu > "Stem"
tricu < -- We can even convert a term back to source code (/demos/toSource.tri)
tricu < toSource not?
tricu > "(t (t (t t) (t t t)) (t t (t t t)))"
tricu < -- or calculate its size (/demos/size.tri)
tricu < size not?
tricu > 12
tricu < -- REPL Commands:
tricu < !definitions -- Lists all available definitions
tricu < !output -- Change output format (Tree, FSL, AST, etc.)
tricu < !import -- Import definitions from a file
tricu < !exit -- Exit the REPL
tricu < !clear -- ANSI screen clear
tricu < !save -- Save all REPL definitions to a file that you can !import
tricu < !reset -- Clear all REPL definitions
tricu < !version -- Print tricu version
Installation and Use
You can easily build and run this project using Nix.
- Quick Start (REPL):
nix run git+https://git.eversole.co/James/tricu
- Build executable in
./result/bin:nix build git+https://git.eversole.co/James/tricu
./result/bin/tricu --help
tricu Evaluator and REPL
tricu [COMMAND] ... [OPTIONS]
tricu: Exploring Tree Calculus
Common flags:
-? --help Display help message
-V --version Print version information
tricu [repl] [OPTIONS]
Start interactive REPL
tricu eval [OPTIONS]
Evaluate tricu and return the result of the final expression.
-f --file=FILE Input file path(s) for evaluation.
Defaults to stdin.
-t --form=FORM Optional output form: (tree|fsl|ast|ternary|ascii|decode).
Defaults to tricu-compatible `t` tree form.
tricu decode [OPTIONS]
Decode a Tree Calculus value into a string representation.
-f --file=FILE Optional input file path to attempt decoding.
Defaults to stdin.
Languages
Haskell
64.1%
Zig
17.2%
JavaScript
6.1%
C
3.8%
PHP
3.4%
Other
5.4%