Update README and REPL formatting for list outputs

This commit is contained in:
James Eversole 2024-12-27 20:54:30 -06:00
parent d804a114bb
commit 14b95f90b5
2 changed files with 15 additions and 13 deletions

View File

@ -16,25 +16,26 @@ This is an active experimentation project by [someone who has no idea what they'
## What does it look like? ## What does it look like?
``` ```
false = t false = t
true = t t _ = t
id = (\\a : a) true = t t
triage = (\\a b c : t (t a b) c) id = (\a : a)
match_bool = (\\ot of : triage of (\\z : ot) t) triage = (\a b c : t (t a b) c)
and = match_bool id (\\z : false) match_bool = (\ot of : triage of (\_ : ot) t)
if = (\\cond then else : t (t else (t t then)) t cond) and = match_bool id (\_ : false)
triage = (\\a b c : t (t a b) c) if = (\cond then else : t (t else (t t then)) t cond)
test = triage \"leaf\" (\\z : \"stem\") (\\a b : \"fork\") 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.
sapling < test t sapling < test t
sapling > Fork (...)
DECODE -: "leaf" DECODE -: "leaf"
sapling < test (t t) sapling < test (t t)
sapling > Fork (...)
DECODE -: "stem" DECODE -: "stem"
sapling < test (t t t) sapling < test (t t t)
sapling > Fork (...)
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!"]
``` ```
## How to use ## How to use

View File

@ -6,6 +6,7 @@ import Parser
import Research import Research
import Control.Monad (void) import Control.Monad (void)
import Data.List (intercalate)
import qualified Data.Map as Map import qualified Data.Map as Map
import System.Console.Haskeline import System.Console.Haskeline
import System.IO (hFlush, stdout) import System.IO (hFlush, stdout)
@ -38,5 +39,5 @@ decodeResult tc = case ofNumber tc of
Left _ -> case ofString tc of Left _ -> case ofString tc of
Right str -> "\"" ++ str ++ "\"" Right str -> "\"" ++ str ++ "\""
Left _ -> case ofList tc of Left _ -> case ofList tc of
Right list -> "[" ++ unlines (map decodeResult list) ++ "]" Right list -> "[" ++ intercalate ", " (map decodeResult list) ++ "]"
Left _ -> "" Left _ -> ""