Cannot instantiate unification variable

Simon Peyton-Jones simonpj at microsoft.com
Tue Nov 26 11:02:21 UTC 2013


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 at haskell.org] On Behalf Of Kazu
| Yamamoto
| Sent: 26 November 2013 02:45
| To: ghc-devs at 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 at haskell.org
| http://www.haskell.org/mailman/listinfo/ghc-devs


More information about the ghc-devs mailing list