在简单的函数中键入混淆

时间:2014-04-19 04:50:48

标签: 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]

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

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

pAlt :: Parser a -> Parser a -> Parser a
pAlt p1 p2 toks = (p1 toks) ++ (p2 toks)

1 个答案:

答案 0 :(得分:5)

Parser本身是函数类型的类型同义词,tokens是结果Parser的参数。