返回在分析器整数>>中解析的整数使用绑定

时间:2016-06-17 21:34:24

标签: parsing haskell trifecta

使用三连接库,我应该解析一个不包含尾随字母的整数字符串返回解析的整数:

Prelude> parseString (yourFuncHere) mempty "123"
Success 123
Prelude> parseString (yourFuncHere) mempty "123abc"
Failure (interactive):1:4: error: expected: digit,
    end of input
123abc<EOF>

我能够使用这样的符号来做到这一点:

x <- decimal
eof
return x

但我没有成功将其翻译成bind / lambdas。

这不保留已解析的数字,但是否则正确:

decimal >> eof

我想我应该这样开始

decimal >>= \x -> eof

但在此之后,我尝试的每个排列都不起作用。如何返回已解析的数字并使用绑定语法而不是do来检查eof?

1 个答案:

答案 0 :(得分:3)

你需要做

decimal >>= (\x -> (eof >> return x))

eof组合器不会返回任何内容,因此您必须自己返回所需内容。