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