Proposal: Add missing Foldable/Traversable instances for Prelude types

Edward Kmett ekmett at
Sat Jan 22 00:33:10 CET 2011

I'd like to propose adding the following missing instances to Data.Foldable
and Data.Traversable respectively, since there isn't a canonical location
that they could be added outside of those packages without orphans, their
definition is unambiguous, and they are quite useful (plus, I happen to need
them for a monad transformer in my adjunctions package).

instance Foldable (Either a) where
  foldMap f (Left a) = mempty
  foldMap f (Right b) = f b

instance Foldable ((,)e) where
  foldMap f ea = f (snd ea)

instance Traversable (Either a) where
  traverse f (Left a) = pure (Left a)
  traverse f (Right a) = Right <$> f a

instance Traversable ((,)e) where
  traverse f ~(e,a) = (,) e <$> f a

Discussion period: 2 weeks

-Edward Kmett
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Libraries mailing list