
But you actually might want different instances for `Maybe` and for `Either`.
For example, let's say that you have a typeclasse for serializing
data-structures into a database.
In case of Maybe you want to serialize `Nothing` into 'NULL' or
something similar; in case of Either you want to have an
entirely different structure.
Additionally, as it have been mentioned, `Either String a` is not the
same thing as `Maybe a`.
Say, you have a value of type `Either String a`. How do you know that
all `Left`-values are suppose to be empty string?
What do you actually want is `Either () a`.
On Thu, Jan 9, 2014 at 8:36 PM, Vlatko Basic
Hi Artyom,
Yes, indeed.
But instance declarations wouldn't be needed because we already have all the instances for Either. The point would be to have them unified. But it is a problem that there are no data constructor synonyms in Haskell. So at least pattern matching wouldn't be possible the simple way. Maybe ViewPatterns could (partially) solve that.
vlatko
-------- Original Message -------- Subject: Re: [Haskell-cafe] Why Maybe exists if there is Either? From: Artyom Kazak
To: haskell-cafe@haskell.org Date: 09.01.2014 16:23 Besides, even defining
type Maybe a = Either () a
in standard library wouldn’t be the same as
data Maybe a = Nothing | Just a
since in Haskell 98 type synonyms aren’t allowed in instance declarations, which means that programmers would still have to remember that `Maybe` is actually `Either ()` under-the-hood every time when writing an instance. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Sincerely yours, -- Daniil