Discussion:
Proposal: add Bounded instances for Maybe and Either
Edward Kmett
2018-05-09 02:15:40 UTC
Permalink
minBound = Left minBound <= Left a < Right b <= Right maxBound = maxBound

fits with the behavior of the existing Ord instance.

On the other hand, Left (), being strictly less than minBound would rather
drastically undermine the expected interaction of Ord and Bounded.

-Edward


On Tue, May 8, 2018 at 1:06 AM, Ivan Lazar Miljenovic <
We can write
instance Bounded a => Bounded (Maybe a) where
minBound = Nothing
maxBound = Just maxBound
instance (Bounded a, Bounded b) => Bounded (Either a b) where
minBound = Left minBound
maxBound = Right maxBound
While Bounded intentionally does not have an Ord superclass, I think it's
worth mentioning that these are the instances that arise naturally from
the
Ord instances for the types in question.
Except these may be surprising to people; e.g. someone may expect that
`minBound = Right minBound` as well. Though as Maybe and Either don't
have Enum instances this may be less of an issue.
--
Ivan Lazar Miljenovic
http://IvanMiljenovic.wordpress.com
_______________________________________________
Libraries mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
Ivan Lazar Miljenovic
2018-05-09 04:30:02 UTC
Permalink
Post by Edward Kmett
minBound = Left minBound <= Left a < Right b <= Right maxBound = maxBound
fits with the behavior of the existing Ord instance.
On the other hand, Left (), being strictly less than minBound would rather
drastically undermine the expected interaction of Ord and Bounded.
Fair enough. I had also missed in David's initial proposal that we
had Bounded on both a and b in (Either a b).

I'm +1 on these instances (more from a "they're the logical instances"
PoV than "this will be useful").
--
Ivan Lazar Miljenovic
***@gmail.com
http://IvanMiljenovic.wordpress.com
Loading...