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 <ivan.miljenovic@gmail.com> wrote:
On 8 May 2018 at 13:19, David Feuer <david.feuer@gmail.com> wrote:
> 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
Ivan.Miljenovic@gmail.com
http://IvanMiljenovic.wordpress.com
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries