[GHC] #4310: Deferred equalities and forall types

GHC cvs-ghc at haskell.org
Tue Sep 14 09:44:37 EDT 2010


#4310: Deferred equalities and forall types
---------------------------------+------------------------------------------
    Reporter:  simonpj           |        Owner:              
        Type:  bug               |       Status:  new         
    Priority:  normal            |    Milestone:              
   Component:  Compiler          |      Version:  6.12.3      
    Keywords:                    |     Testcase:              
   Blockedby:                    |   Difficulty:              
          Os:  Unknown/Multiple  |     Blocking:              
Architecture:  Unknown/Multiple  |      Failure:  None/Unknown
---------------------------------+------------------------------------------
 In the new typechecker we occasionally find we want an equality
 {{{
 (forall a. F a beta) ~ (forall a. F a gamma)
 }}}
 where beta, gamma are unification variables that are (later) fixed from
 outside. As things stand we can't solve this, because our coercion form is
 too weak.  Once Brent is done, however, I think we will.  This ticket
 records the problem.

 It shows up in package `vector`:
  * `Data.Vector`, `Data.Vector.Unboxed`, `Data.Vector.Storable`,
 `Data.Vector.Primitive`: need to eta expand defn of `modify`.
  * `Data.Vector.Generic.New`: eta expand `create`

 A small example:
 {{{
 type function Mutable a :: * -> * -> *

 data New v a = New (forall s. ST s (Mutable v s a))

 create :: (forall s. ST s (Mutable v s a)) -> New v a
 create = New
 }}}

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4310>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the Glasgow-haskell-bugs mailing list