我试图在Haskell中解析一个布尔表达式。这一行给了我一个错误:BoolExpr <$> parseBoolOp <*> (n : ns)
。这是错误:
第一个
boolExpr需要一个Parser [Expr]
,但我只返回了一个[Expr]
。是否有方法修复此问题或用其他方法?当我尝试pure(n:ns)时,evalStr "(and true (and false true) true)"
返回Left (ParseError "'a' didn't match expected character")
而不是Right (BoolVal False)
1条答案
按热度按时间gopyfrb31#
表达式
(n : ns)
是一个列表,因此编译器认为应用运算符<*>
和<$>
应该在上下文[]
中使用,而您需要的是Parser
。我猜你需要的是
pure (n : ns)
。