Now I took a look at your code =x, i think you can let it work using #(let
instead of #((let

2010/4/18 Joop Kiefte <iko...@gmail.com>

> you can do #(identity 1)
>
> 2010/4/18 Yonov <myo...@gmail.com>
>
> Thanks, a lot!
>> It seems that there is no nice way to make a shortened lambda function
>> which returns an integer.
>> I mean #(1) is not OK, and #1 is not OK. Although there is no problem
>> with this (fn [] 1).
>>
>> On Apr 18, 5:48 pm, "Stephen C. Gilardi" <squee...@mac.com> wrote:
>> > On Apr 18, 2010, at 9:21 AM, Yonov wrote:
>> >
>> >
>> >
>> > > Hi,
>> > > I am trying to implement memoize myself and have stucked on one place
>> > > for a lot of time. This is the code:
>> >
>> > > (defn mymemoize [func]
>> > >  (let [dict (ref (hash-map))
>> > >    inner #((let
>> > >                            [val (@dict %)]
>> > >          (if (nil? val)
>> > >            (do (dosync (alter dict conj {% (func %)})) (println (class
>> > > (@dict %))) (@dict %))
>> > >                    val)))]
>> > >    inner))
>> >
>> > > (defn gg [x]
>> > >    (if (= x 1) 1 2))
>> > > (def ff (mymemoize gg))
>> > > (ff 1)
>> >
>> > > I am printing only for debuging purposes. Actually everything in the
>> > > do-block is OK, but there is no return value. Why?
>> >
>> > The body of your anonymous function literal (#()) has an extra level of
>> parentheses. Your code is coming up with the correct answer (the Integer 1)
>> and then trying to execute it with no arguments. That's what this exception:
>> >
>> > java.lang.ClassCastException: java.lang.Integer cannot be cast to
>> clojure.lang.IFn (NO_SOURCE_FILE:0)
>> >
>> > is trying to convey:
>> >
>> > This works:
>> >
>> > (defn mymemoize [func]
>> >   (let [dict (ref (hash-map))
>> >         inner #(let [val (@dict %)]
>> >                  (if (nil? val)
>> >                    (do (dosync (alter dict conj {% (func %)}))
>> >                        (println (class (@dict %)))
>> >                        (@dict %))
>> >                    val))]
>> >     inner))
>> >
>> > --Steve
>> >
>> > --
>> > 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<clojure%2bunsubscr...@googlegroups.com>
>> > For more options, visit this group athttp://
>> groups.google.com/group/clojure?hl=en
>>
>> --
>> 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<clojure%2bunsubscr...@googlegroups.com>
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>>
>
>
>
> --
> Communication is essential. So we need decent tools when communication is
> lacking, when language capability is hard to acquire...
>
> - http://esperanto.net  - http://esperanto-jongeren.nl
>
> Linux-user #496644 (http://counter.li.org) - first touch of linux in 2004
>



-- 
Communication is essential. So we need decent tools when communication is
lacking, when language capability is hard to acquire...

- http://esperanto.net  - http://esperanto-jongeren.nl

Linux-user #496644 (http://counter.li.org) - first touch of linux in 2004

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