Thanks, all. Memoize appears to be exactly what I was looking for. Is there no end to discovering eminently useful capabilities hidden away some place in Clojure's API?

For the moment I don't see what Meikel Brandmeyer's lazymap gives me that memoize doesn't, but I will look into it.
  --Larry

On 1/21/13 1:55 AM, Jozef Wagner wrote:
Or maybe https://bitbucket.org/kotarak/lazymap ?

On Monday, January 21, 2013 7:38:01 AM UTC+1, Alex Baranosky wrote:

    memoize, or delay maybe

    On Sun, Jan 20, 2013 at 10:29 PM, AtKaaZ <atk...@gmail.com
    <javascript:>> wrote:

        memoize?


        On Mon, Jan 21, 2013 at 7:27 AM, Larry Travis
        <tra...@cs.wisc.edu <javascript:>> wrote:

            One of the neat things about Clojure (maybe all functional
            languages) is that functions can be defined either
            extensionally or intensionally. How can one create a
            Clojure structure that mixes these two types of definition?

            That is, I would like to define a function f that saves
            its result the first time it is called against any
            particular argument so that if and when f is later called
            against the same argument, it does a look-up via a hash
            map rather than repeating a possibly expensive
            computation. I think I see how to do this with a ref to a
            mutable map (where, given an argument k, f would first try
            to find (f k) in the map but, if k is not currently a key
            of the map, the function would compute the value v = (f k)
            and then, in addition to returning v, add the entry <k v>
            to the map as a side effect. But this seems ugly. Is there
            some way to do what I want here without making explicit
            use of refs?

            Lazy-seqs don't give me what I want because the arguments
            to be given to f don't occur in any kind of predictable
            sequence.

              --Larry


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