Am Mi., 6. Mai 2020 um 21:13 Uhr schrieb David Feuer <david.feuer@gmail.com
:
The Bounded class is broken because it combines two distinct concepts: BoundedAbove and BoundedBelow.
Indeed, having that distinction would be useful. Just to add some bikeshedding regarding the names: * HasInfimum / HasSupremum or * HasInitialObject / HasTerminalObject or shorter * HasInitial / HasTerminal (maybe a bit too short) I wouldn't be too surprised if Edward K. already has something like this on Hackage. :-)
If Maybe is to have instances similar to what it has now, they should surely look like
instance BoundedBelow (Maybe a) where minBound = Nothing instance BoundedAbove a => BoundedAbove (Maybe a) where maxBound = Just maxBound
Well, choosing Nothing to be the infimum is rather arbitrary, you could as well define: instance BoundedBelow a => BoundedBelow (Maybe a) where minBound = Just minBound instance BoundedAbove (Maybe a) where maxBound = Nothing But the previous definition is probably a better fit given the Ord instance, nevertheless. the choice *is* arbitrary. Perhaps Maybe should not be an instance of either class?