On Thu, Jan 1, 2009 at 2:47 PM, Rock <rocco.ro...@gmail.com> wrote: > > Given that there's nothing like letrec in Clojure, and that let acts > like let* in CL, I gather that local recursive functions are possible > whereas local mutually recursive ones are not. Is that correct? If so, > will they ever be in the future?
I assume you meant "are not possible". I think someone previously posted a letrec macro using something he called a "Y* combinator". I don't know what that is, but he said it was slow. Here's another way. Nothing about it is pretty, but it is a possibility: (let [my-even-atom (atom nil) my-even? (fn [i] (@my-even-atom i)) my-odd? (fn [i] (if (zero? i) false (@my-even-atom (dec i))))] (swap! my-even-atom (constantly (fn [i] (if (zero? i) true (my-odd? (dec i)))))) (my-odd? 4)) Ick. But perhaps a macro could make style less terrible to use? --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 clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---