Muchos de los combinadores Parsec que uso son de un tipo tal como:Subyacente Parsec Mónada
foo :: CharParser st Foo
CharParser
se define here como:
type CharParser st = GenParser Char st
CharParser
es por lo tanto un sinónimo tipo que implica GenParser
, en sí definido here como:
type GenParser tok st = Parsec [tok] st
GenParser
es luego otro sinónimo de tipo, asignado usando Parsec
, definido here como:
type Parsec s u = ParsecT s u Identity
Así Parsec
es una aplicación parcial de , en sí enumeran here con el tipo:
data ParsecT s u m a
junto con las palabras :
"ParsecT suma es un analizador con st resma tipo s, estado de usuario tipo u, mónada subyacente y tipo de retorno a. "
¿Cuál es la mónada subyacente? En particular, ¿qué ocurre cuando uso los analizadores CharParser
? No puedo ver dónde está insertado en la pila. ¿Existe una relación con el uso de la lista de mónada en Monadic Parsing in Haskell para devolver múltiples análisis exitosos de un analizador ambiguo?
Gracias, he editado mi pregunta para incluir ese paso. Entonces es la base del transformador de mónada. Creo que no tiene ninguna relación con el análisis ambiguo descrito en el documento de Hutton/Meijer. Entonces, ¿ese uso de la mónada de la lista aparece en cualquier lugar dentro del analizador Parsec? ¿Parsec es solo no ambiguo? Si es así, ¿está codificado usando 'Maybe' o' Either'? – user2023370
La mónada subyacente no es utilizada por parsec, por lo que no afecta la ambigüedad. – augustss
Creo que lo que estaba tratando de preguntar era la relación entre la lista de mónadas en el documento de Hutton/Meijer; y el [Consumido] (http://hackage.haskell.org/packages/archive/parsec/latest/doc/html/Text-Parsec-Prim.html#t:Consumed) y [Responder] (http: // hackage .haskell.org/packages/archive/parsec/latest/doc/html/Text-Parsec-Prim.html # t: Reply) tipos utilizados en Parsec. – user2023370