Merge pull request #532 from dubek/vhdl-fix-defmacro
[jackhill/mal.git] / impls / lib / trivial.mal
1 ;; Trivial but convenient functions.
2
3 ;; Integer predecessor (number -> number)
4 (def! inc (fn* [a] (+ a 1)))
5
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
15 ;; Generate a hopefully unique symbol. See section "Plugging the Leaks"
16 ;; of http://www.gigamonkeys.com/book/macros-defining-your-own.html
17 (def! gensym
18 (let* [counter (atom 0)]
19 (fn* []
20 (symbol (str "G__" (swap! counter inc))))))