@@ -0,0 +1,29 @@
1+module Prelude.Foldable
9+class Foldable (t : Type -> Type) where
10+ foldr : (elt -> acc -> acc) -> acc -> t elt -> acc
12+foldl : Foldable t => (acc -> elt -> acc) -> acc -> t elt -> acc
13+foldl f z t = foldr (flip (.) . flip f) id t z
15+concat : (Foldable t, Monoid a) => t a -> a
16+concat = foldr (<+>) neutral
18+and : Foldable t => t Bool -> Bool
21+or : Foldable t => t Bool -> Bool
24+any : (Foldable t, Functor t) => (a -> Bool) -> t a -> Bool
25+any p = Foldable.or . fmap p
27+all : (Foldable t, Functor t) => (a -> Bool) -> t a -> Bool
28+all p = Foldable.and . fmap p