Hi everyone,
I'm working my way through Practical Clojure's macro chapter, and I'd like
to check my understanding about one of the examples.
The book discusses writing a macro to randomly evaluate a form out of a list
of forms--essentially a cond that randomly selects which branch to evaluate.
The book's version looks like this:
(defmacro rand-expr-multi [& exprs]
`(let [ct# ~(count exprs)]
(case (rand-int ct#)
~@(interleave (range (count exprs)) exprs))))
My version looks like this:
(defmacro rand-expr-mulit [& exprs]
(let [n (rand-int (count exprs))]
(nth exprs n)))
Is there any difference between the two? I'm a little shaky on macro
expansion-time vs run-time, hygiene, etc.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en