我需要从Parsec的整数函数中获取Int类型。我的代码目前是
aTerm = parens aExpression
<|> liftM GetV identifier
<|> liftM N integer
N的类型是
N :: Num a => a -> Expr a
我得到的错误是
Shane.hs:227:18:
Couldn't match expected type `Int' with actual type `Integer'
Expected type: Text.Parsec.Prim.ParsecT String u0 Identity Int
Actual type: Text.Parsec.Prim.ParsecT String u0 Identity Integer
In the second argument of `liftM', namely `integer'
In the second argument of `(<|>)', namely `liftM N integer'
Failed, modules loaded: none.
可以在这里提取Int类型吗?使用fromInteger某种方式?从Int更改为Integer不是一种选择。
答案 0 :(得分:3)
这应该有用。
aTerm = parens aExpression
<|> liftM GetV identifier
<|> liftM (N . fromInteger) integer