[Haskell-beginners] Laziness, automatic memoization and arrays

Brent Yorgey byorgey at seas.upenn.edu
Sun Aug 28 01:12:01 CEST 2011


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



More information about the Beginners mailing list