[Haskell-cafe] Arithmetic expressions with GADTs: parsing
Roman Cheplyaka
roma at ro-che.info
Wed May 2 14:02:46 CEST 2012
* j.romildo at gmail.com <j.romildo at gmail.com> [2012-05-02 08:03:45-0300]
> Hello.
>
> In order to learn GADTs, I have written the attached program, which
> defines a type for arithmetic expressions using GADTs, a parser for
> them, and an evaluation function.
>
> But my parser does not typecheck. ghc-7.4.1 gives me the error message:
>
> Expr.hs:25:28:
> Couldn't match expected type `Double' with actual type `Bool'
> Expected type: Bool -> Expr Double
> Actual type: Bool -> Expr Bool
> In the first argument of `(<$>)', namely `B'
> In the first argument of `(<|>)', namely `B <$> pBool'
>
> Any clues on how to fix that?
The alternatives given to <|> must be of the same type. In your case,
one is Expr Double and one is Expr Bool.
Inclusion of pBool in pFactor is probably a mistake — unless you're
going to multiply booleans.
--
Roman I. Cheplyaka :: http://ro-che.info/
More information about the Haskell-Cafe
mailing list