oolisp 0.1.9

LISP based on Daniel Holden's Book, compiles to web assembly
Documentation
def {true} 1
def {false} 0
def {nil} ()

(def {fun} (\ {args body} {def (head args)   (\ (tail args) body)}))

(fun {list & xs} {xs})

(fun {cons x xs} {join (list x) xs})
(fun {snoc x xs} {join xs (list x)})

(fun {first x : xs} {x})
(fun {second x : xs} {eval (head xs)})

(fun {curry f xs} {eval (join (list f) xs)})
(fun {uncurry f : xs} {f xs})

fun {len l} {if (empty l) {0} {+ 1 (len (tail l))}}

fun {reverse x} {if (== (len l) 1) {l} {snoc (head l) (reverse (tail l)) }}

fun {empty l} {if (== (len l) 0) {true} {false}}
fun {dec n} {- n 1}
fun {inc n} {+ n 1}

fun {nth l n} {if (== n 0) {head l} {nth (tail l) (dec n)}}

fun {do : l} {if (== l nil) {nil} {last l}}