(foldr + 0 '(1 2 3 4))
で折り、私が期待するものである戻り10が、 (foldr and false '(true true false))
は私にエラー and: expected an open parenthesis before and, but found none
foldrを与えるには、2つのパラメータをとる(関数を受け取り、私は1つのリストを持って
私はfoldlから壊す必要があります。ここで私は、この例では、人工的である知っているが、抜け出すための任意の素敵な方法があります L = [1,2,3,4,10,5,6,7],
Res =
try
lists:foldl(
fun(I, Value) ->
if (I < 10) ->
Value + I;
foldrのように、リスト内包と融合しているようです。したがって、この例ではfoldl(21mb)と比較してメモリが少なくて済みます。 myfunc = sum $ foldr g acc [ f x | x <- xs ]
f x = ..
g x y = ..
誰でもどのように、なぜそれを説明できますか?また、どのように怠惰な評価がこれに役立ちます。
シーケンスを折りたたみ、範囲に沿ったいくつかの点で中間値も知りたいとします。これは私はこのために使用したものである: [a,b,c] = map fst . tail $ chain [g i, g j, g k] (zero, sequence)
g :: Integer -> (a,b) -> (a,b)
chain (f:fs) x = x : chain fs (f x)
cha