commit 1e23465bc38d6ea506fb168ee1e3f8bb5cd02bf0
parent 8b326e8dcf2797bd39af43ba852de32336020c12
Author: James Eversole <james@eversole.co>
Date: Sat, 28 Dec 2024 22:20:43 -0600
Further README clarification
Diffstat:
| M | README.md | | | 44 | ++++++++++++++++++++++++-------------------- |
1 file changed, 24 insertions(+), 20 deletions(-)
diff --git a/README.md b/README.md
@@ -2,38 +2,42 @@
## Introduction
-sapling is a "micro-language" that I'm working on to investigate [Tree Calculus](https://github.com/barry-jay-personal/typed_tree_calculus/blob/main/typed_program_analysis.pdf) .
+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:
+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 (WIP)
-
-This is an active experimentation project by [someone who has no idea what they're doing](https://eversole.co).
+- List, Number, and String literals
## What does it look like?
```
-false = t
-_ = t
-true = t t
-id = (\a : a)
-triage = (\a b c : t (t a b) c)
-match_bool = (\ot of : triage of (\_ : ot) t)
-and = match_bool id (\_ : false)
-if = (\cond then else : t (t else (t t then)) t cond)
-triage = (\a b c : t (t a b) c)
-test = triage "leaf" (\_ : "stem") (\_ _ : "fork")
-
--- The REPL outputs the tree form results by default; they are elided here.
+-- 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
-DECODE -: "leaf"
+sapling > Fork (Fork Leaf (Fork ...) ... )
+DECODE -: "Leaf"
sapling < test (t t)
-DECODE -: "stem"
+DECODE -: "Stem"
sapling < test (t t t)
-DECODE -: "fork"
+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!"]
```