[Haskell-beginners] Laziness, automatic memoization and arrays

Daniel Fischer daniel.is.fischer at googlemail.com
Sun Aug 28 01:13:43 CEST 2011


On Sunday 28 August 2011, 01:03:00, 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

Needs parentheses,

    print (c ! 4)

Without, it parses `(print c) ! 4' since function application binds tighter 
than infix operators.

> 
> 
> Can we assume that the operation 4 * 4 is evaluated only once, when
> first calling print c ! 4 in the main method?

Yes. Although technically an implementation is allowed to recompute the 
value, no serious implementation will.



More information about the Beginners mailing list