{-# OPTIONS_GHC -fno-warn-orphans #-}
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