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

Reply via email to