Awesome—thanks for everyone's answers; I think I'll go with delay/
force. What I'm a little worried about is the caching. After a calling
of "alt" finishes, what happens to all those Delay objects and their
cached values? Are they garbage-collected, or will they remain
indefinitely? Should I worry?

On Jan 12, 6:13 am, MikeM <[email protected]> wrote:
> Not a macro, but does what you want:
>
> (defn alt [& functions]
>   (fn [tokens]
>     (some #((force %) tokens) functions)))
>
> ;define sub-functions the same way
>
> (defn a-meta-meta-function [c]
>   (alt (delay (sub-function1 c)) (delay (sub-function2 c)) (delay (sub-
> function3 c))))
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to