verbales problemas modelos lineales lineal graficación funciones funcion ejercicios comparar comparacion como sorting haskell

sorting - modelos - problemas verbales de graficación de funciones lineales



componiendo dos funciones de comparación? (1)

vitus señala la genial instancia de Monoid para Ordering . Si lo combina con la instancia instance Monoid b => Monoid (a -> b) resulta que su función de composición es justa (prepárese):

mappend

Echale un vistazo:

Prelude Data.Monoid> let f a b = EQ Prelude Data.Monoid> let g a b = LT Prelude Data.Monoid> :t f `mappend` g f `mappend` g :: t -> t1 -> Ordering Prelude Data.Monoid> (f `mappend` g) undefined undefined LT Prelude Data.Monoid> let f a b = GT Prelude Data.Monoid> (f `mappend` g) undefined undefined GT

+1 para abstracciones poderosas y simples

Me gustaría ordenar por una propiedad y luego por otra (si la primera propiedad es la misma).

¿Cuál es la forma idiomática en Haskell de componer dos funciones de comparación, es decir, una función utilizada con sortBy ?

Dado

f :: Ord a => a -> a -> Ordering g :: Ord a => a -> a -> Ordering

componer f y g produciría:

h x y = case v of EQ -> g x y otherwise -> v where v = f x y