"Jim - FooBar();" <[email protected]> writes:
> Ok we've established that accessing records fields is much faster than
> using regular maps...
Really?
> what will happen though if we create a memoized fn that simply returns
> the map?
Well, if you memoize a fn of no args, it'll always return the same
value. If that's really what you want, I'd rather use
(def the-map (expr-calculating-the-map))
If it needs to be a function for some reason, then I'd use
(def gimme-the-map (constantly (expr-calculating-the-map)))
But I don't think the above applies to your usecase. Can it be that the
function constructs the returned map by inspecting the value of some
ref/atom or the current-phase-of-moon or so? In that case, you can't
memoize the fn. Example:
--8<---------------cut here---------------start------------->8---
user> (def gimme-random (let [r (java.util.Random.)]
(fn [] (.nextInt r))))
#'user/gimme-random
user> (gimme-random)
696947893
user> (gimme-random)
-1591730151
user> (gimme-random)
459131481
user> (def memoized-gimme-random (memoize gimme-random))
#'user/memoized-gimme-random
user> (memoized-gimme-random)
-1840720068
user> (memoized-gimme-random)
-1840720068
user> (memoized-gimme-random)
-1840720068
--8<---------------cut here---------------end--------------->8---
Bye,
Tassilo
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en