[email protected]
[Top] [All Lists]

Re: [Haskell-cafe] Haskell and "memoization"

Subject: Re: [Haskell-cafe] Haskell and "memoization"
From: Daniel Fischer
Date: Wed, 16 Dec 2009 05:28:04 +0100
Am Mittwoch 16 Dezember 2009 05:08:39 schrieb Gregory Crosswhite:
> Haskell does not maintain a cache mapping function calls to their values,
> so if you have some function f and call it with, say, the argument 7 in two
> different places in your code, then it will re-evaluate the function at
> each point.  The only time it will not do this is when it can see
> explicitly that the value will be shared, i.e. situations like "g (f 7) (f
> 7)" should only result in one evaluation of f 7 in simple cases, presuming
> the compiler is sufficiently smart.

Not even then, necessarily. And it's not always a good idea.

f k = [1 .. 20^k]

g xs ys = genericLength (ys ++ xs)

Finding out when to share is really hard.

> Cheers,
> Greg

Haskell-Cafe mailing list
[email protected]

<Prev in Thread] Current Thread [Next in Thread>