On 08/03/07, Simon Peyton-Jones <[EMAIL PROTECTED]> wrote:
NB that infix type constructors must start with ":", just like infix data 
constructors.

Now that's just not true.

{-# OPTIONS_GHC -fglasgow-exts #-}

type a $ b = a b

data Foo a = Foo a deriving (Show)
data Bar = Bar (Foo $ Int) deriving (Show)

main = print (Bar (Foo 4))

GHCi session:

Prelude> :load "/home/david/hs/sandbox/infix-tycons.hs"
[1 of 1] Compiling Main             (
/home/david/hs/sandbox/infix-tycons.hs, interpreted )
Ok, modules loaded: Main.
*Main> main
Bar (Foo 4)
*Main>
----------------------------

There would be no reason for this restriction. The only reason to
start infix data constructors with ':' would be to seperate them
lexically from infix functions -- just as a leading capital serves to
seperate prefix data constructors from prefix functions. There is no
such clash with type constructors as there are no type functions.
Hence the classic example:

class Arrow (~>) where ...

--
-David House, [EMAIL PROTECTED]
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to