On Fri, Sep 21, 2007 at 03:48:25AM +0100, PR Stanley wrote:
> Hi
> or = foldl (||) False
> and = foldl (&&) True
> I can understand the rationale for the accumulator value - True && [] where 
> [] = True and True || [] where [] = False
> Other than the practical convenience is there a reason for having the empty 
> list in and and or equating to True and False?
> Thanks, Paul

It makes and and or into monoid morphisms.

and (xs ++ ys)  =  and xs && and ys
or  (xs ++ ys)  =  or  xs || or  ys

(PS are you sure you meant foldl?  the standard definitons use foldr)

Stefan

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to