Commit | Line | Data |
---|---|---|
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)))))) |