Cannot instantiate unification variable

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Cannot instantiate unification variable

Kazu Yamamoto (山本和彦)
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

Reply | Threaded
Open this post in threaded view
|

Cannot instantiate unification variable

Simon Peyton Jones
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