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

Reply via email to