Haskell Lazy Evaluation and Reuse
Posted
by
Jonathan Sternberg
on Stack Overflow
See other posts from Stack Overflow
or by Jonathan Sternberg
Published on 2010-12-26T01:43:44Z
Indexed on
2010/12/26
1:54 UTC
Read the original article
Hit count: 549
I know that if I were to compute a list of squares in Haskell, I could do this:
squares = [ x ** 2 | x <- [1 ..] ]
Then when I call squares like this:
print $ take 4 squares
And it would print out [1.0, 4.0, 9.0, 16.0]. This gets evaluated as [ 1 ** 2, 2 ** 2, 3 ** 2, 4 ** 2 ]. Now since Haskell is functional and the result would be the same each time, if I were to call squares again somewhere else, would it re-evaluate the answers it's already computed? If I were to re-use squares after I had already called the previous line, would it re-calculate the first 4 values?
print $ take 5 squares
Would it evaluate [1.0, 4.0, 9.0, 16.0, 5 ** 2]?
© Stack Overflow or respective owner