[GHC] #11524: Something is amiss with quantification in pattern synonym type signatures

GHC ghc-devs at haskell.org
Mon Feb 1 20:51:50 UTC 2016


#11524: Something is amiss with quantification in pattern synonym type signatures
-------------------------------------+-------------------------------------
        Reporter:  bgamari           |                Owner:
            Type:  bug               |               Status:  new
        Priority:  high              |            Milestone:  8.0.1
       Component:  Compiler (Type    |              Version:  8.0.1-rc1
  checker)                           |
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  GHC rejects       |  Unknown/Multiple
  valid program                      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by goldfire):

 If I understand pattern signatures correctly, it's a bug in the pretty-
 printer. Here is the correct version with explicit quantification:

 {{{
 pattern PApp :: forall k2 (fun :: k2). ()
              => forall k1 (a :: k1 -> k2) (b :: k1). (fun ~ a b)
              => AType a -> AType b -> AType fun
 }}}

 Note that `k2` and `fun` are universal, while `k1`, `a`, and `b` are
 existential. And indeed this signature is accepted.

 Two problems remain:

 1. That error message is unhelpful. I imagine we can do better.

 2. The pretty-printer should put the existentials in the right spot.

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


More information about the ghc-tickets mailing list