10 (def one-thru-four (list 1 2 3 4))
11 ;;=> #'user/one-thru-four
16 (cons 10 one-thru-four)
18 (cons 5 one-thru-four)
21 ;; get nth element of a list
22 (defn list-ref [items n]
25 (list-ref (rest items) (- n 1))))
27 (list-ref one-thru-four 3)
29 (list-ref one-thru-four 5)
31 (list-ref one-thru-four 1)
33 (list-ref one-thru-four 0)
39 (+ 1 (length (rest items)))))
41 (length one-thru-four)
44 (defn- length-i [items n]
47 (length-i (rest items) (+ 1 n))))
49 (defn length-iter [items]
52 (length-iter one-thru-four)
55 (defn append [list1 list2]
59 (append (rest list1) list2))))
61 (append one-thru-four one-thru-four)
62 ;;=> (1 2 3 4 1 2 3 4)
65 (defn scale-list [items factor]
68 (cons (* factor (first items))
69 (scale-list (rest items) factor))))
71 (defn map [proc items]
74 (cons (proc (first items))
75 (map proc (rest items)))))
77 (defn scale-list-with-map [items factor]
78 (map (fn [item] (* item factor)) items))
81 (def x (cons (list 1 2) (list 3 4)))
87 (defn count-leaves [coll]
90 :else (+ (count-leaves (first coll))
91 (count-leaves (next coll)))))