Cannot instantiate unification variable

Hi, Recent GHC head on 32bit Linux cannot build conduit-1.0.9.2. (See the attached log.) A while ago, GHC head on 32bit Linux could build it. The same GHC head on 64bit Linux can build it. Michael Snoyman suggested me to add ImpredicativeTypes. When I added it to the Internal.hs, GHC head on 32bit Linux can build it. And he said to other released GHCs can build it. Actually, GHC 7.4.2 on 32bit Linux can build it. He believes that this is a bug of GHC head (on 32bit Linux). Any information? Note that conduit-1.0.9.3 already includes ImpredicativeTypes. --Kazu Building conduit-1.0.9.2... Preprocessing library conduit-1.0.9.2... [2 of 8] Compiling Data.Conduit.Internal ( Data/Conduit/Internal.hs, dist/build/Dat a/Conduit/Internal.o ) Data/Conduit/Internal.hs:211:105: Cannot instantiate unification variable ‛b0’ with a type involving foralls: (forall a. m1 a -> n1 a) -> ConduitM i o m1 b1 -> ConduitM i o n1 b1 Perhaps you want ImpredicativeTypes In the expression: GHC.Exts.coerce (hoist :: (forall (a :: *). m a -> n a) -> Pipe i i o () m b -> Pipe i i o () n b) :: forall (m :: * -> *) (b :: *) (n :: * -> *). Monad m => (forall (a :: *). m a -> n a) -> ConduitM i o m b -> ConduitM i o n b In an equation for ‛hoist’: hoist = GHC.Exts.coerce (hoist :: (forall (a :: *). m a -> n a) -> Pipe i i o () m b -> Pipe i i o () n b) :: forall (m :: * -> *) (b :: *) (n :: * -> *). Monad m => (forall (a :: *). m a -> n a) -> ConduitM i o m b -> ConduitM i o n b

Ah. Good point. I've made a simplified test case https://ghc.haskell.org/trac/ghc/ticket/8565 Thanks Simon | -----Original Message----- | From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of Kazu | Yamamoto | Sent: 26 November 2013 02:45 | To: ghc-devs@haskell.org | Subject: Cannot instantiate unification variable | | Hi, | | Recent GHC head on 32bit Linux cannot build conduit-1.0.9.2. (See the | attached log.) A while ago, GHC head on 32bit Linux could build it. | The same GHC head on 64bit Linux can build it. | | Michael Snoyman suggested me to add ImpredicativeTypes. When I added | it to the Internal.hs, GHC head on 32bit Linux can build it. And he | said to other released GHCs can build it. Actually, GHC 7.4.2 on | 32bit Linux can build it. | | He believes that this is a bug of GHC head (on 32bit Linux). Any | information? | | Note that conduit-1.0.9.3 already includes ImpredicativeTypes. | | --Kazu | | Building conduit-1.0.9.2... | Preprocessing library conduit-1.0.9.2... | [2 of 8] Compiling Data.Conduit.Internal ( Data/Conduit/Internal.hs, | dist/build/Dat | a/Conduit/Internal.o ) | | Data/Conduit/Internal.hs:211:105: | Cannot instantiate unification variable ‛b0’ | with a type involving foralls: | (forall a. m1 a -> n1 a) | -> ConduitM i o m1 b1 -> ConduitM i o n1 b1 | Perhaps you want ImpredicativeTypes | In the expression: | GHC.Exts.coerce | (hoist :: | (forall (a :: *). m a -> n a) | -> Pipe i i o () m b -> Pipe i i o () n b) :: | forall (m :: * -> *) (b :: *) (n :: * -> *). Monad m => | (forall (a :: *). m a -> n a) | -> ConduitM i o m b -> ConduitM i o n b | In an equation for ‛hoist’: | hoist | = GHC.Exts.coerce | (hoist :: | (forall (a :: *). m a -> n a) | -> Pipe i i o () m b -> Pipe i i o () n b) :: | forall (m :: * -> *) (b :: *) (n :: * -> *). Monad m => | (forall (a :: *). m a -> n a) | -> ConduitM i o m b -> ConduitM i o n b | _______________________________________________ | ghc-devs mailing list | ghc-devs@haskell.org | http://www.haskell.org/mailman/listinfo/ghc-devs
participants (2)
-
Kazu Yamamoto
-
Simon Peyton-Jones