1 (def! dec (fn* (a) (- a 1)))
3 (def! zero? (fn* (n) (= 0 n)))
9 (reduce f (f init (first xs)) (rest xs)))))
11 (def! identity (fn* (x) x))
18 (every? pred (rest xs))
25 (let* (res (pred (first xs)))
28 (some pred (rest xs)))))))
36 (let* (condvar (gensym))
37 `(let* (~condvar ~(first xs))
38 (if ~condvar (and ~@(rest xs)) ~condvar)))))))
44 (let* (form (first xs)
48 `(~(first form) ~x ~@(rest form))
50 `(-> (-> ~x ~form) ~@more))))))
56 (let* (form (first xs)
60 `(~(first form) ~@(rest form) ~x)
62 `(->> (->> ~x ~form) ~@more))))))
64 ; This `nil` is intentional so that the result of doing `load-file` is
65 ; `nil` instead of whatever happens to be at the end of `core.mal`.