Hi.

Here's a strange interaction of type families and higher-rank
polymorphism (tested with both ghc-6.8.3 and ghc-6.10.1):

{-# LANGUAGE TypeFamilies, EmptyDataDecls, RankNTypes #-}

data X (a :: *)
type family Y (a :: *)

-- This works (datatype).
i1 :: (forall a. X a) -> X Bool
i1 x = x 

-- This works too (type family and extra arg).
i2 :: (forall a. a -> Y a) -> Y Bool
i2 x = x True

-- This doesn't work (type family).
-- i3 :: (forall a. Y a) -> Y Bool
-- i3 x = x

I would expect i3 to be ok as well. Note that this is a
simplified example and not really useful in its simplified
form.

Cheers,
  Andres

-- 

Andres Loeh, Universiteit Utrecht

mailto:[email protected]     mailto:[email protected]
http://www.andres-loeh.de
_______________________________________________
Haskell mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to