On Tue, 29 Jun 2010 22:44:58 -0700 (PDT) Tim Robinson <tim.blacks...@gmail.com> wrote:
> So I am reading On Lisp + some blogs while learning Clojure (I know, > scary stuff :) > > Anyway, I've been playing around to see if I can get an anonymous > recursive function to work, but alas I am still a n00b and not even > sure what Clojure's approach to this would be. > How would I do this in Clojure?: IIUC based on examples involving label and letrec, you want a recursive function whose name isn't visible outside of some restricted scope. letfn is analogous to those, and that would look like: (letfn [(anon [x] (if (= x 0) 1 (* 2 (anon (dec x)))))] (anon 5)) > My first attempt: > > ((fn [x] > (if (= x 0) > 1 > (* 2 (recur (dec z))))) 5) > > Then my second: > > ((fn [x] > (let [z (if (= x 0) > 1 > (* 2 x))] > (recur (dec z)))) 5) > > Ideally one could do: > > ((recursive-fn #( if (= % 0) 1 (* 2 %)) (recur it)) 5) > > > Obviously none work, and I believe I understand why. I just don't > understand how to actually do this or if for some reason Clojure > avoids this for some reason. On the other hand, maybe I misunderstood what you're trying to do, in which case an example of what you mean by "anonymous recursive function" in another language (CL or Scheme by preference) would help. <mike -- Mike Meyer <m...@mired.org> http://www.mired.org/consulting.html Independent Network/Unix/Perforce consultant, email for more information. O< ascii ribbon campaign - stop html mail - www.asciiribbon.org -- 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