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 clo...@googlegroups.com<javascript:> >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+u...@**googlegroups.com <javascript:> >>> For more options, visit this group at >>> http://groups.google.com/**group/clojure?hl=en<http://groups.google.com/group/clojure?hl=en> >>> >> >> >> >> -- >> I may be wrong or incomplete. >> Please express any corrections / additions, >> they are encouraged and appreciated. >> At least one entity is bound to be transformed if you do ;) >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clo...@googlegroups.com<javascript:> >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com <javascript:> >> For more options, visit this group at >> http://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 For more options, visit this group at http://groups.google.com/group/clojure?hl=en