In the Haskell 98 report, I found this:
The syntax for Haskell type expressions is given above. Just as data values are built using data constructors,
Just to be completely clear: Haskell 98 and Haskell 2000 both allow infix value constructors such as
data Complex r = r :+ r
Here the value constructor (:+)
is infix, as in 5 :+ 7
.
You only need the TypeOperators
extension to have type constructors which are infix. For example,
data x ??! y = Left x | Right y
Here the type constructor (??!)
is infix, as in Int ??! Bool
.