在简单的函数中键入混淆

MFl*_*mer 3 haskell list-comprehension

我已经离开Haskell很长一段时间了.我正在研究"实施功能语言教程",以便快速了解并了解更多有关幕后内容的信息.我似乎无法得到"令牌"这个论点如何适用于此.类型签名清楚地说明这个函数需要一个函数和2个解析器并返回一个解析器."令牌"是列表理解中使用的列表理解的结果吗?谢谢.

pThen :: (a -> b -> c) -> Parser a -> Parser b -> Parser c
pThen combine p1 p2 tokens =
    [(combine v1 v2, tokens2) | (v1, tokens1) <- p1 tokens,
                                (v2, tokens2) <- p2 tokens1]
Run Code Online (Sandbox Code Playgroud)

编辑:在阅读下面的有用答案之后,我在本书中稍早注意到这个更简单的例子.这里更加明显,以防万一将来对其他人有帮助.

pAlt :: Parser a -> Parser a -> Parser a    

pAlt :: Parser a -> Parser a -> Parser a
pAlt p1 p2 toks = (p1 toks) ++ (p2 toks)
Run Code Online (Sandbox Code Playgroud)

kos*_*kus 5

Parser它本身是函数类型的类型同义词,并且tokens是结果的参数Parser.