foo :: CharParser st Foo
CharParser
はとしてhere定義される:
type CharParser st = GenParser Char st
CharParser
こうしてGenParser
を含むタイプの同義語であり、それ自体をhereを以下のように定義する:
type GenParser tok st = Parsec [tok] st
GenParser
次いでParsec
を使用して割り当てられた別のタイプの同義語は、としてhere定義される:だからParsec
はの部分的なアプリケーションであり、それ自体がタイプとhereを列挙し
type Parsec s u = ParsecT s u Identity
:
data ParsecT s u m a
単語と共に:
"ParsecT sumaはst連鎖型s、ユーザ状態型u、 の基礎となるモナドmと戻り値型a。
基礎となるモナドとは何ですか?特に、私がCharParser
パーサを使用すると、それは何ですか?スタックにどこに挿入されているのか分かりません。あいまいなパーサーから成功した複数のパーズを返すために、Monadic Parsing in Haskellのリストモナドを使用することと関係はありますか?
ありがとう、私はそのステップを含めるために私の質問を編集しました。モナド変圧器のベースです。 Hutton/Meijerの論文で説明されているあいまいな解析とは関係がないと私は信じています。それで、リストモナドの使用は、Parsecパーサー内のどこにでも現れますか? Parsecはあいまいではありませんか?もしそうなら、 'Maybe'または' Either'を使ってコード化されていますか? – user2023370
基礎となるモナドは、それ自体では使用されないので、あいまいさには影響しません。 – augustss
私が尋ねようとしていたのは、Hutton/Meijer紙のリストモナドとの関係でした。 [Consumed](http://hackage.haskell.org/packages/archive/parsec/latest/doc/html/Text-Parsec-Prim.html#t:Consumed)および[Reply](http:// hackage .haskell.org/packages/archive/parsec/latest/doc/html/Text-Parsec-Prim.html#t:Reply)の形式をParsecで使用します。 – user2023370