module Data.Foldable.Compat (
module Base
, Foldable(..)
) where
import Data.Foldable as Base
#if !MIN_VERSION_base(4,7,0)
import Data.Either (Either(..))
import Data.Monoid (mempty)
import Control.Applicative (Const(..))
instance Foldable (Either a) where
foldMap _ (Left _) = mempty
foldMap f (Right y) = f y
foldr _ z (Left _) = z
foldr f z (Right y) = f y z
instance Foldable ((,) a) where
foldMap f (_, y) = f y
foldr f z (_, y) = f y z
instance Foldable (Const m) where
foldMap _ _ = mempty
#endif