yorick: Fix evaluation of empty vectors in steps 2 and 3
[jackhill/mal.git] / impls / lib / trivial.mal
CommitLineData
dcdb6c02
NB
1;; Trivial but convenient functions.
2
26ced15b
NB
3;; Integer predecessor (number -> number)
4(def! inc (fn* [a] (+ a 1)))
5
dcdb6c02
NB
6;; Integer predecessor (number -> number)
7(def! dec (fn* (a) (- a 1)))
8
9;; Integer nullity test (number -> boolean)
10(def! zero? (fn* (n) (= 0 n)))
11
12;; Returns the unchanged argument.
13(def! identity (fn* (x) x))
14
e748a37d
NB
15;; Generate a hopefully unique symbol. See section "Plugging the Leaks"
16;; of http://www.gigamonkeys.com/book/macros-defining-your-own.html
26ced15b
NB
17(def! gensym
18 (let* [counter (atom 0)]
19 (fn* []
20 (symbol (str "G__" (swap! counter inc))))))