Merge pull request #532 from dubek/vhdl-fix-defmacro
[jackhill/mal.git] / impls / lib / alias-hacks.mal
1 ;; aliases for common clojure names to mal builtins
2 ;; NOTE: this is a hack
3
4 ;; Origin: https://github.com/chr15m/frock
5
6 ; TODO: re-implement as actually useful macros:
7 ; destructuring, arg checking, etc.
8
9 (def! _alias_add_implicit
10 (fn* [special added]
11 (fn* [x & xs]
12 (list special x (cons added xs)))))
13
14 (defmacro! let (_alias_add_implicit 'let* 'do))
15 (defmacro! when (_alias_add_implicit 'if 'do))
16 (defmacro! def (_alias_add_implicit 'def! 'do))
17 (defmacro! fn (_alias_add_implicit 'fn* 'do))
18 (defmacro! defn (_alias_add_implicit 'def! 'fn))
19
20 (def! partial (fn* [pfn & args]
21 (fn* [& args-inner]
22 (apply pfn (concat args args-inner)))))