[GHC] #16148: Better type inference for Constraint vs Type

GHC ghc-devs at haskell.org
Tue Jan 8 17:21:51 UTC 2019


#16148: Better type inference for Constraint vs Type
-------------------------------------+-------------------------------------
        Reporter:  simonpj           |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.6.3
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #11621, #11715,   |  Differential Rev(s):
  #13742, #16139                     |
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by simonpj):

 >  You say "don't worry about levity polymorphism", but the example you
 give is explicitly ruled out by our lev-poly story

 Ah, that's not true: see [https://www.microsoft.com/en-
 us/research/publication/levity-polymorphism/ Section 7.3 of the levity-
 polymorphism paper], where we discuss functions like
 {{{
 absX :: forall (r :: RuntimeRep) (a :: TYPE r). NumX a => a -> a
 }}}
 where `NumX :: forall (r :: RuntimeRep). TYPE r -> Constraint` is levity-
 polymorphic.  Here we allow `absX` to have an arrow `a -> a` with a
 levity-polymorphic argument; it's just ''term binders'' that can't have
 levity-polymorphic types.

 Another point is that messing with TYPE etc affects the entire compiler.
 A major merit of plan (A) is that it affects the type inference engine
 only and is then gone.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16148#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list