tol*_*ene 4 haskell lazy-evaluation
假设我有类似的功能
foo = 8 + f1
where f1 = 8 + 9
f2 = 8 + 10
Run Code Online (Sandbox Code Playgroud)
f1显然必须进行评估,但f2不一定要评估.会不会呢?我可以看到评估每个where表达式是一个性能问题.
是的,它很懒,所以f2不会被评估,例如:
foo = 8 + f1
where f1 = 8 + 9
f2 = last [1..]
Run Code Online (Sandbox Code Playgroud)
将立即计算,如果严格,将永远计算.