foldr
function works so:
Suppose, you have list [1, 2, 3]
. Let's write this list as (:) 1 ((:) 2 ((:) 3 []))
, where each element has type a
. Function foldr
takes function f
of a -> b -> b
type and starting element z
of b
type, and just replace []
to z
and :
to f
. So, foldr f z ((:) 1 ((:) 2 ((:) 3 []))) == f 1 (f 2 (f 3 z))
.
So, you can define your functions so:
allZero = foldr (x -> x == 0 &&) True
oneZero = foldr (x -> x == 0 ||) False
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…