これら 2 つのコードの違い ( に関してx
) はわかりませんが、最初のコードは次のように完了します。
$ foldr (\x y -> if x == 4 then x else x + y) 0 [1,2 .. ]
10
そして2番目のものはそうではありません(少なくともGHCiでは):
$ foldr (\x (y, n) -> if x == 4 then (x, n) else (x + y, n + 1)) (0, 0) [1,2 .. ]
.......
最初の例のように、ヒットしたときに 2 番目の例が完了しない原因は何x == 4
ですか?
x
との両方x == 4
( a 内)に強打パターンを追加しようとしましlet
たが、どちらも違いはないようです。