(include "lib/core.scm")
(datatype list
(:nil)
(:cons 'a (list 'a))
)
(define car
(x . _) -> x
_ -> (error "car")
)
(define cdr
(_ . y) -> y
_ -> (error "cdr")
)
(cdr '(1 2 3))
(define thing
(1 2 a b) -> a
(1 2 a 9) -> a
() -> 0
_ -> -1
)
(define duncan
((1 2) (3 4 5) (6 7)) -> "idaho"
_ -> "donuts"
)
{ a = (car '(1 2 3))
b = (cdr '(10 11 12))
c = (thing '(1 2 9 8))
d = (duncan '((1 2) (3 4 5) (6 7)))
e = (duncan '((1 2) (3 4 5 9) (6 7)))
}