GHCI has a debugger. You can step into an expression and watch as Haskell evaluates it, in full lazy order.
Even if you understand lazy evaluation in theory, I recommend taking some non-trivial (but not too large) expression and :step'ing through the whole evaluation sometime, just to train your intuition.
Comments
No, foldr walks through the list forward, and exactly once. Your example is evaluated as
Is there an (easy) way to see what/how haskell evaluates such code (ie: step through)? Something like explain from sql or disassemble from lisp?
GHCI has a debugger. You can step into an expression and watch as Haskell evaluates it, in full lazy order.
Even if you understand lazy evaluation in theory, I recommend taking some non-trivial (but not too large) expression and :step'ing through the whole evaluation sometime, just to train your intuition.