使用三连接库,我应该解析一个不包含尾随字母的整数字符串和返回解析的整数:
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?
答案 0 :(得分:3)
你需要做
decimal >>= (\x -> (eof >> return x))
eof
组合器不会返回任何内容,因此您必须自己返回所需内容。