[Haskell-cafe] Why Maybe exists if there is Either?

Nickolay Kudasov nickolay.kudasov at gmail.com
Thu Jan 9 15:14:03 UTC 2014

Hi Vlatko,

Actually, Maybe can be seen as Either () a. Not String or Int because then
you would have multiple Nothings (if Left "" is Nothing then what would Left
"hello" be?). So Either e a is (generally) somewhat *bigger* than Maybe a.

Since Either can be used to represent strictly bigger types, you may not
want it sometimes. lookup function (to find element in a list by its index)
is an example. It is unnecessary to keep extra information in () or Stringor
Int about what caused failure. So if we either *don’t care what caused
failure* or *can unambiguously determine the cause* Maybe suits better (is
more readable) than Either ().


2014/1/9 Vlatko Basic <vlatko.basic at gmail.com>

> Hello Cafe,
> With my current knowledge of Haskell, I do not see why is there Maybe if
> we have Either.
> For example, Functor and Monad instances (and many others) of Maybe and
> Either are the same (except for fail).
> In other words, this should hold:
>     Maybe a  = Either String a     -- String or something else
>     Nothing   = Left ""
>     Just a       = Right a
> I'm curious to find out what was the reasoning to make Maybe?
> What is the added value with introducing it?
> In which situations the above substitution does not hold?
> Best regards,
> vlatko
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140109/af2a16c6/attachment.html>

More information about the Haskell-Cafe mailing list