haskell - Ejemplo de parsec trivial produce un error de tipo
(1)
Creo que has corrido contra la restricción del monomorfismo . Esta restricción significa: si una variable se declara sin argumentos explícitos, su tipo debe ser monomórfico. Esto obliga al buscador de tipos a elegir una instancia particular de Stream
, pero no puede decidir.
Hay dos formas de combatirlo:
Dar una firma explícita
simple
:simple :: Stream s m Char => ParsecT s u m Char simple = letter
Desactivar la restricción de monorfismo:
{-# LANGUAGE NoMonomorphismRestriction #-} import Text.Parsec simple = letter
Ver ¿Qué es la restricción de monomorfismo? Para más información sobre la restricción de monomorfismo.
Estoy tratando de conseguir este código parsec trivial para compilar
import Text.Parsec
simple = letter
pero sigo recibiendo este error
No instance for (Stream s0 m0 Char)
arising from a use of `letter''
Possible fix: add an instance declaration for (Stream s0 m0 Char)
In the expression: letter
In an equation for `simple'': simple = letter