Hi,

The Haskell language specification states that it is a non-strict language, but nothing about the evaluation strategy (like when and how an expression is evaluated, and to what level). It does mention the word "evaluate" several times when talking about pattern matching.

I have read a wonderful tutorial (http://en.wikibooks.org/wiki/Haskell/Laziness) about lazy evaluation and weak head normal form, but it is just an implemenation strategy of some compiler, which I should not depend on when writing codes.  

I come from a strict language background and I just don't feel right if I don't understand how my codes are execuated. I wonder why the language specificition does not define the evaluation strategy. 

I hope someone can enlighten me. Thanks!

-- 
spockwang