我已经离开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]
编辑:在阅读下面的有用答案后,我在本书的前面注意到这个更简单的例子。这里更加明显,以防万一将来对其他人有帮助。
pAlt :: Parser a -> Parser a -> Parser a
pAlt :: Parser a -> Parser a -> Parser a
pAlt p1 p2 toks = (p1 toks) ++ (p2 toks)
答案 0 :(得分:5)
Parser
本身是函数类型的类型同义词,tokens
是结果Parser
的参数。