19 lines
383 B
Scheme
19 lines
383 B
Scheme
(def defn
|
|
(mac (name args . body)
|
|
(list 'def name (cons 'fn (cons args body)))))
|
|
|
|
(defn map-aux (f acc l)
|
|
(if (nil? l)
|
|
(acc f '())
|
|
(map-aux
|
|
f
|
|
(fn (f ys)
|
|
(acc f (cons (f (head l)) ys)))
|
|
(tail l))))
|
|
|
|
(defn map (f l)
|
|
(map-aux f (fn (f x) x) l))
|
|
|
|
(println
|
|
(map (fn (x) (* x x))
|
|
'(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20)))
|