J. *_*son 12
没有必要.严格性foldl'允许它在遍历输入列表时立即消除thunk.
foldl' (+) 0 [1,2,3] foldl (+) 0 [1,2,3]
foldl' (+) 1 [2,3] foldl (+) (0 + 1) [2,3]
foldl' (+) 3 [3] foldl (+) ((0 + 1) + 2) [3]
foldl' (+) 6 [] foldl (+) (((0 + 1) + 2) + 3) []
6 (((0 + 1) + 2) + 3)
((1 + 2) + 3)
(3 + 3)
6
Run Code Online (Sandbox Code Playgroud)
但是当你这样做scanl时会产生一个包含这些步骤的列表
scanl (+) 0 [1,2,3]
[ 0
, 0 + 1
, (0 + 1) + 2
, ((0 + 1) + 2) + 3
]
Run Code Online (Sandbox Code Playgroud)
并且您必须遍历整个列表以查看最终结果,该结果可让您控制如何强制使用thunk.这将评估控制推向列表的消费者.
| 归档时间: |
|
| 查看次数: |
1051 次 |
| 最近记录: |