使用ParSec整数函数给出一个Int?

时间:2012-11-25 17:21:24

标签: haskell parsec

我需要从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不是一种选择。

1 个答案:

答案 0 :(得分:3)

这应该有用。

aTerm =  parens aExpression
     <|> liftM GetV identifier
     <|> liftM (N . fromInteger) integer