(0-) (reverse [1 2 3 4])
[4 3 2 1]
(1-) (REVERSE [1 2 3]) \\ Lisp native call in uppercase
[3 2 1]
(2-) ((fn reverse) [1 2 3 4]) \\ same as first case
[4 3 2 1]
(3-) ((fn REVERSE) [1 2 3 4]) \\ REVERSE is not defined in Shen
fn: REVERSE is undefined
(4-) (define r
X -> (REVERSE X)) \\ trying to define it in Shen - no go
free variables in r: REVERSE
(5-) (define r \\ getting it right
X -> ((protect REVERSE) X))
(fn r)
(6-) (r [1 2 3])
[3 2 1]
(7-) ((fn r) [1 2 3]) \\ r is defined in Shen
[3 2 1]
Mark