However, I have this feeling that

 bar :: forall a . Id a -> String

with a type family Id *is* parametric in the sense that no matter what a is, the result always has to be the same. Intuitively, that's because we may not "pattern match on the branch" of a definition like

 type instance Id String = ..
 type instance Id Int    = ..
 ..

But in a degenerate case there could be just this one instance:

        type instance Id x = GADT x

which then reduces this example to the GADT case of which you said that is was "clearly parametric".

Tom
--
Tom Schrijvers

Department of Computer Science
K.U. Leuven
Celestijnenlaan 200A
B-3001 Heverlee
Belgium

tel: +32 16 327544
e-mail: [EMAIL PROTECTED]
url: http://www.cs.kuleuven.be/~toms/
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to