module Data.Traversable.Compat (
module Base
, Traversable(..)
) where
import Data.Traversable as Base
#if !MIN_VERSION_base(4,7,0)
import Data.Either (Either(..))
import Data.Foldable.Compat ()
import Data.Function (($))
import Control.Applicative (Const(..),pure,(<$>))
instance Traversable (Either a) where
traverse _ (Left x) = pure (Left x)
traverse f (Right y) = Right <$> f y
instance Traversable ((,) a) where
traverse f (x, y) = (,) x <$> f y
instance Traversable (Const m) where
traverse _ (Const m) = pure $ Const m
#endif