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@gmail.com> wrote:
On Thu, May 30, 2013 at 12:53 PM, Gabriel Gonzalez <gabriel439@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@haskell.org
http://www.haskell.org/mailman/listinfo/libraries