(ns guik.evil)
;;1) Special forms cannot be shadowed
(defmacro let* []
  (+ 1 1))
;; (let*) ; would yield
;=> clojure.lang.Compiler$CompilerException:
java.lang.IllegalArgumentException: Bad binding form, expected vector
(evil.clj:6)
;;2) Shadowing a macro does not change macros that depend on it.
(defmacro foobar [x]
  `(let [a# ~x]
     (+ a# a#)))
(defmacro let []
  `(guik.evil/let*))
(foobar 10) ;=> 20

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to