Excellent, thanks! Stuart
On Sat, Nov 8, 2008 at 8:31 PM, Stuart Halloway > > <[EMAIL PROTECTED]> wrote: >> >> (defmacro defrunonce [sym doc & forms] >> "Defines a function with runonce semantics. Curren run status >> is kept in a reference under the :has-run metadata key." >> (let [[function has-run] (runonce (eval (concat (list 'fn []) >> forms)))] >> `(def ~(with-meta sym {:has-run has-run}) ~function))) > > (defmacro defrunonce [sym doc & forms] > "Defines a function with runonce semantics. Curren run status > is kept in a reference under the :has-run metadata key." > (let [has-run (gensym)] > `(let [[function# ~has-run] (runonce (fn [] [EMAIL PROTECTED]))] > (def ~(with-meta sym {:has-run has-run}) function#)))) > > --Chouser --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---