
Oh, I think that Either has its uses. For example, a convenient
function that I use every now and then is:
mapEither :: (a -> Either b c) -> [a] -> ([b],[c])
It is kind of like "mapMaybe" and also like "partition".
The benefit of omitting some instances is that when programmers find
them lacking, they might consider an alternative way to achieve their
goal. In the case of Monad and Either, my feeling is that an
alternative would almost always lead to code which is easier to
understand. Yitzchak's example illustrates just that.
daysInMonth :: Int -> Int -> Int
daysInMonth month year
| month == 2 = if isLeap year then 29 else 28
| month `elem` [4,6,9,11] = 30
| otherwise = 31
-Iavor
On Tue, Jun 1, 2010 at 8:06 AM, Ross Paterson
On Mon, May 31, 2010 at 10:18:11AM -0700, Iavor Diatchki wrote:
Are there any uses of this instance that are not related to error handing? If not, I would propose that we avoid prolonging the confusing use of "Either" for error handling and define a separate type with properly labelled constructors, to be used as "Maybe" but with multiple reasons for failure.
We could do that, but Either would still be there, and the question of what instances it should have would remain. Would it really help to withold the obvious instances? _______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries