Excerpts from Bulat Ziganshin's message of Thu May 28 15:07:02 +0200 2009: > Hello Lennart, > > Thursday, May 28, 2009, 11:57:09 AM, you wrote: > > > -- | Generalization of the 'Bool' type. Used by the generalized 'Eq' and > > 'Ord'. > > class Boolean bool where > > (&&) :: bool -> bool -> bool -- ^Logical conjunction. > > (||) :: bool -> bool -> bool -- ^Logical disjunction. > > i use another approach which imho is somewhat closer to interpretation > of logical operations in dynamic languages (lua, ruby, perl):
I tend to prefer Monoid: (|||) :: (Monoid a, Eq a) => a -> a -> a a ||| b | a == mempty = b | otherwise = a (&&&) :: (Monoid a, Eq a, Monoid b) => a -> b -> b a &&& b | a == mempty = mempty | otherwise = b In particular I also like this one (however I would like another name): mapNonEmpty :: (Eq a, Monoid a, Monoid b) => (a -> b) -> a -> b mapNonEmpty f x | x == mempty = mempty | otherwise = f x Best regards, -- Nicolas Pouillard http://nicolaspouillard.fr _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe