In case anybody else found defblockfn useful, here's the final
version. The original didn't work when you used destructuring in the
argument list of the function.
(defn remove_destructuring [params]
(map (fn [arg]
(if (or (vector? arg) (map? arg))
(gensym)
arg))
params))
(defmacro defblockfn [function params & body]
(let [tempfn (symbol (str function "*"))
macro_params (butlast (remove_destructuring params))]
`(do (defn ~tempfn ~params ~...@body)
(defmacro ~function [...@macro_params & tail#]
`(~'~tempfn ~...@macro_params (fn [] ~...@tail#))))))
-Patrick
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---