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