Why is there no Foldable instance for Either?

Gabriel Gonzalez gabriel439 at gmail.com
Thu May 30 22:47:23 CEST 2013


On 05/30/2013 01:45 PM, Dan Burton wrote:
> We have already right-biased Eithers in Haskell for Functor, 
> Applicative, and Monad. We should be consistent and right-bias it for 
> Foldable, Traversable, and similar typeclasses. Left-biasing can still 
> be accomplished with a newtype wrapper, and perhaps we should consider 
> including this in the standard libraries as well.
>
Keep in mind that `errors` can provide the `Left`-biased versions 
because it already has the appropriate newtype for doing so: `EitherR`.
> Until the change happens, I'd suggest recommending that "errors" users 
> requiring this functionality lean on the "lens" instances.
>
> -- Dan Burton
>
>
> On Thu, May 30, 2013 at 1:12 PM, Shachaf Ben-Kiki <shachaf at gmail.com 
> <mailto:shachaf at gmail.com>> wrote:
>
>     On Thu, May 30, 2013 at 12:53 PM, Gabriel Gonzalez
>     <gabriel439 at gmail.com <mailto:gabriel439 at gmail.com>> wrote:
>     > I'm surprised that `Either` does not have a `Foldable` instance
>     of the form:
>     >
>     >     import Data.Foldable
>     >     import Data.Monoid
>     >
>     >     instance Foldable (Either e) where
>     >         foldMap f (Left  _) = mempty
>     >         foldMap f (Right r) = f r
>     >
>     >         foldr _ z (Left  _) = z
>     >         foldr f z (Right r) = f r z
>     >
>     > In other words, the above instance would behave like the `Maybe`
>     `Foldable`
>     > instance, treating `Left` in the same way as `Nothing`.
>     >
>     > This came up in the context of an issue raised on the `errors`
>     package:
>     >
>     > https://github.com/Gabriel439/Haskell-Errors-Library/issues/16
>     >
>     > I could provide an orphan instance for `Either` in the `errors`
>     package, but
>     > I wanted to ask if it was possible to incorporate the instance
>     directly into
>     > `Data.Foldable`.
>     >
>
>     This instance should exist. There's been a couple of discussion on
>     libraries@ before. One of them is at
>     <http://www.haskell.org/pipermail/libraries/2012-July/018246.html>.
>
>     I wrote a patch for base at one point --
>     <http://shachaf.net/0001-Add-Foldable-and-Traversable-instances-for-Either-e-.patch>
>     -- but didn't go through the rest of the process at the time.
>
>     Right now `lens` has an orphan instance for this, by the way.
>
>         Shachaf
>
>     _______________________________________________
>     Libraries mailing list
>     Libraries at haskell.org <mailto:Libraries at haskell.org>
>     http://www.haskell.org/mailman/listinfo/libraries
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20130530/58434950/attachment.htm>


More information about the Libraries mailing list