(defn float2 [f a b]
  (f (float a ) (float b)))

(float2 + 1 2) => 3.0

(defmacro mfloat2 [f a b]
  (f (float a) (float b)))
(mfloat2 + 1 2 ) => 2.0  ???   macro expend to last expression in
list,right?

(defmacro m2float2 [f a b]
 `(~f (float ~a) (float ~b)))
(mfloat2 + 1 2)  => 3.0

(defmacro m3float2 [f a b]
 (list f (float a ) (float b)))
(m3float2 + 1 2) => 3.0


 functions of macro only not evaluating args ?
what's the difference between macro and call by name in other
language?

gerry
--~--~---------~--~----~------------~-------~--~----~
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