
27 Aug
2011
27 Aug
'11
7:12 p.m.
On Sat, Aug 27, 2011 at 07:03:00PM -0400, Oscar Picasso wrote:
Hi,
I have a very simple question about laziness, memoization and arrays. If I have:
import Data.Array
a = listArray (1,10) $ map (\x -> (x*x)) [1..10]
main = do print c ! 4 print c ! 4 print c ! 4
Can we assume that the operation 4 * 4 is evaluated only once, when first calling print c ! 4 in the main method?
Yes. Any value with a name (such as c in your example) will only be evaluated once, no matter how many times you refer to it. -Brent