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]
?