On Wed, Aug 26, 2009 at 6:40 PM, Sourav <soura.ja...@gmail.com> wrote:

>
> Hi,
>
> I'm new to clojure and came from a Lisp background. While learning I
> clojure I came accross the two different ways of creating anonymous
> functions ((fn ...) and #(...)). I tried to construct the accumulator
> function in clojure using these forms and this is what I wrote (this
> might seem naive but I'm just a beginner :)
>
> 1.
>
> (defn foo [n]
>  (let [r (ref n)]
>    (fn [i]
>       (dosync
>         (alter r + i) @r))))
> And it works fine:
>
> user> (def f (foo 10))
> #'user/f
> user> (f 1)
> 11
> user> (f 1)
> 12
>
> 2.
> (defn foo2 [n]
>  (let [r (ref n)]
>    #((dosync
>        (alter r + %) @r))))
>

(defn foo2 [n]
 (let [r (ref n)]
   #(dosync
       (alter r + %) @r))))
Try the above. The difference between #() and (fn ...) was not the root of
your problem. You had an extra paren before dosync.

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