GADTs and infix?

Conal Elliott conal at conal.net
Mon Jul 17 13:51:59 EDT 2006


In ghc 6.5, why does this GADT definition get accepted

> data DArrowX :: * -> * -> * where
>   First   :: DArrowX a  a' -> DArrowX (a,b) (a',b)

and also this one

> data DArrowX :: * -> * -> * where
>   First   :: a `DArrowX`  a' -> DArrowX (a,b) (a',b)

but this not one

> data DArrowX :: * -> * -> * where
>   First   :: a `DArrowX`  a' -> (a,b) `DArrowX` (a',b)

which yields

    Malformed constructor signature: (a, b) DArrowX (a', b)
    In the signature of a data constructor: a DArrowX a' -> (a, b)
DArrowX (a', b)
    In the data type declaration for `DArrowX'

Is this a bug?

  - Conal



More information about the Glasgow-haskell-bugs mailing list