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