1 (def! inc (fn* (a) (+ a 1)))
3 (def! dec (fn* (a) (- a 1)))
5 (def! zero? (fn* (n) (= 0 n)))
10 (reduce f (f init (first xs)) (rest xs))
13 (def! identity (fn* (x) x))
19 (every? pred (rest xs))
23 (def! not (fn* (x) (if x false true)))
28 (let* (res (pred (first xs)))
31 (some pred (rest xs))))
40 (let* (condvar (gensym))
41 `(let* (~condvar ~(first xs))
42 (if ~condvar (and ~@(rest xs)) ~condvar)))))))
50 (let* (condvar (gensym))
51 `(let* (~condvar ~(first xs))
52 (if ~condvar ~condvar (or ~@(rest xs)))))))))
56 (if (> (count clauses) 0)
57 (list 'if (first clauses)
58 (if (> (count clauses) 1)
60 (throw "cond requires an even number of forms"))
61 (cons 'cond (rest (rest clauses)))))))
67 (let* (form (first xs)
71 `(~(first form) ~x ~@(rest form))
73 `(-> (-> ~x ~form) ~@more))))))
79 (let* (form (first xs)
83 `(~(first form) ~@(rest form) ~x)
85 `(->> (->> ~x ~form) ~@more))))))