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é.