Probablemente ya hay una newtype
que cambia el sentido de Ord, Bounded, etc. Algo a lo largo de las líneas de
newtype FlipOrd a = FlipOrd {unFlip :: a} deriving (Eq)
instance (Ord a) => Ord (FlipOrd a) where
compare = flip compare
instance (Bounded a) => Bounded (FlipOrd a) where
minBound = FlipOrd maxBound
maxBound = FlipOrd minBound
¿Dónde vive esto en los paquetes de Haskell existentes?
Nota: hay una existente Reverse
Functor
, que hace algo muy diferente, y afortunadamente tiene un tipo completamente incompatible.
Respuestas
9 para la respuesta № 1Es simplemente en Data.Ord
: Down
. (Esto no tiene una Bounded
ejemplo, sin embargo.)