On Wed, Sep 28, 2011 at 2:27 PM, ru <soro...@oogis.ru> wrote: > The documentation says that the macro function is called with the > arguments unevaluated. So I write code for that function on that > assumption. And when I run this code the arguments being evaluated. It > does not matter why or how and when! They mustn't evaluated never in > that case in accordance with the documentation! That is the question! > Because the unevaluated arguments is an important feature that allows > you to expand the language using macros.
Let's put it this way - you misunderstood the documentation. What the documentation says is correct and defmacro behaves as advertised. The arguments are _never_ evaluated when they are _passed_ to the macro, but that doesn't mean they can never be evaluated inside the macro no matter what you do. In case of macros, the developer is (that is, you are) in charge of _when_ do evaluate the arguments; and you did that when you typed in ~e inside the `let` binding. It was your choice and none can do anything about it. Regards, BG -- Baishampayan Ghose b.ghose at gmail.com -- 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