Duda - Clases Eq y Ord

Duda - Clases Eq y Ord

de Santiago Agustín Silveira Pérez -
Número de respuestas: 1

Hola.

Si tengo esta función:

foo a b = if a < b then "hola" else "chau"

¿Por qué su tipo más general es foo :: Ord a => a -> a -> String, y no foo :: Eq a => a -> a -> String
?

Mi duda de fondo es la relación entre las clases Eq y Ord. Yo pensaba que si un valor es de tipo Ord, también sería de tipo Eq porque Ord estaría "incluida" en Eq. Si pongo que el tipo de la función es Eq a, me marca error, así que no es como yo pienso, pero no entiendo bien porqué.