Hi dear clojurians!
From Clojure documentation (http://clojure.org/evaluation):
..If the operator of a call is a symbol that names a global var that is
a macro function, that macro function is called and is passed the
/unevaluated/ operand forms.
But:
ru@ru-desktop ~/clojure/clojure-1.2.1 $ java -cp clojure.jar clojure.main
Clojure 1.2.1
user=> (defmacro infix [e] `(let [[x# f# y#] ~e] (f# x# y#)))
#'user/infix
user=> (infix [5 + 4])
9
user=> (infix (5 + 4))
java.lang.ClassCastException: java.lang.Integer cannot be cast to
clojure.lang.IFn (NO_SOURCE_FILE:0)
user=>
So, it is tried to evaluate the form (5 + 4). Is not it?
As I remember from Lisp, UNevaluation of arguments is one of the main
properties of macros. Am I right?
Thank you in advance for the any explanations.
Sincerely,
Ru
--
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