Efectos de la restricción de monomorfismo en restricciones de clase de tipo

Este código se rompe cuando una declaración de tipo parabaz está agregado

baz (x:y:_) = x == y
baz [_] = baz []
baz [] = False

Una explicación común (ver ¿Por qué no puedo declarar el tipo inferido? por ejemplo) es que se debe a la recursión polimórfica.

Pero esa explicación no explica por qué el efecto desaparece con otro ejemplo polimórfico recursivo:

foo f (x:y:_) = f x y
foo f [_] = foo f []
foo f [] = False

ampoco explica por qué GHC piensa que la recursión es monomórfica sin declaración de tipo.

Puede la explicación del ejemplo conreads inhttp: //www.haskell.org/onlinereport/decls.html#sect4.5. se aplicará a mibaz case?

Es decir. agregar una firma elimina la restricción de monomorfismo, y sin la restricción aparece una ambigüedad del lado derecho [], con un tipo 'intrínsecamente ambiguo' deforall a . Eq a => [a]?

Respuestas a la pregunta(2)

Su respuesta a la pregunta