[GHC] #10729: Type inference in GADT pattern matches

GHC ghc-devs at haskell.org
Mon Aug 3 00:04:49 UTC 2015


#10729: Type inference in GADT pattern matches
-------------------------------------+-------------------------------------
        Reporter:  mniip             |                   Owner:
            Type:  bug               |                  Status:  closed
        Priority:  normal            |               Milestone:
       Component:  Compiler (Type    |                 Version:  7.11
  checker)                           |
      Resolution:  invalid           |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  GHC rejects       |  Unknown/Multiple
  valid program                      |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:
-------------------------------------+-------------------------------------
Changes (by rwbarton):

 * status:  new => closed
 * resolution:   => invalid


Comment:

 Replying to [ticket:10729 mniip]:
 > When pattern matching against GADT constructors, GHC seems to have
 issues with inferring the type of the resulting expression.
 >
 > Minimal example: Assume the datatype:
 >
 > {{{
 > data D a where D :: D ()
 > }}}
 > A simple function that pattern matches on it:
 > {{{
 > a D = ()
 > }}}
 > It is expected to have type `D a -> ()`

 Why not `a :: D a -> a`? This function definition has no principal type.

 See the very end of the user's guide section
 https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/data-type-
 extensions.html#gadt. The type of the function body is not rigid in your
 example, because you did not specify it with a type annotation, and the
 only information about the type comes from inside a pattern match on a
 refining constructor. It is one of the examples in the linked paper, in
 appendix A.

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


More information about the ghc-tickets mailing list