Automatic decoding & display of string, number, and list types in REPL. General updates to README, style, and comments.
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# sapling
 | 
						|
 | 
						|
## 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) .
 | 
						|
 | 
						|
It offers a minimal amount of syntax sugar:
 | 
						|
 | 
						|
- `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).
 | 
						|
 | 
						|
## What does it look like?
 | 
						|
 | 
						|
```
 | 
						|
false = t
 | 
						|
true = t t
 | 
						|
id = (\\a : a)
 | 
						|
triage = (\\a b c : t (t a b) c) 
 | 
						|
match_bool = (\\ot of : triage of (\\z : ot) t)
 | 
						|
and = match_bool id (\\z : 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\" (\\z : \"stem\") (\\a b : \"fork\")
 | 
						|
 | 
						|
sapling < test t
 | 
						|
sapling > Fork (...)
 | 
						|
DECODE -: "leaf"
 | 
						|
sapling < test (t t)
 | 
						|
sapling > Fork (...)
 | 
						|
DECODE -: "stem"
 | 
						|
sapling < test (t t t)
 | 
						|
sapling > Fork (...)
 | 
						|
DECODE -: "fork"
 | 
						|
```
 | 
						|
 | 
						|
## How to use
 | 
						|
 | 
						|
For now, you can easily build and run this project using Nix:
 | 
						|
 | 
						|
1. Clone the repository:
 | 
						|
    a. `git clone ssh://git.eversole.co/sapling.git`
 | 
						|
    b. `git clone https://git.eversole/sapling.git`
 | 
						|
1. Run the REPL: `nix run`
 | 
						|
 | 
						|
## 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.
 |