[GHC] #12120: GHC accepts invalid Haskell: `class Eq (a Int) => C a where`

GHC ghc-devs at haskell.org
Thu May 26 09:52:01 UTC 2016


#12120: GHC accepts invalid Haskell: `class Eq (a Int) => C a where`
-------------------------------------+-------------------------------------
           Reporter:  thomie         |             Owner:
               Type:  bug            |            Status:  new
           Priority:  lowest         |         Milestone:
          Component:  Compiler       |           Version:  8.0.1
           Keywords:  report-impact  |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  Documentation
  Unknown/Multiple                   |  bug
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 From the Haskell 2010 report
 [https://www.haskell.org/onlinereport/haskell2010/haskellch4.html chapter
 4],

 * Class and instance declarations:
 {{{
 |       class [scontext =>] ...
 |       instance [scontext =>] ...
 }}}

 * Normal type signatures:
 {{{
         vars :: [context =>] ...
 }}}

 Notice the difference between `scontext` (//with// `s`) and `context`
 (without `s`).

 {{{
 scontext        →       simpleclass
         |       ( simpleclass1 , … , simpleclassn )         (n ≥ 0)
 simpleclass     →       qtycls tyvar
 }}}

 {{{
 context         →       class
         |       ( class1 , … , classn )             (n ≥ 0)
 class   →       qtycls tyvar
         |       qtycls ( tyvar atype1 … atypen )            (n ≥ 1)

 }}}

 GHC seems to ignore this difference, and happily accepts `class Eq (a Int)
 => C a where`. Hugs (Version: September 2006) reports for that same
 example:
 {{{
 Illegal Haskell 98 class constraint in class declaration
 *** Constraint : Eq (a Int)
 }}}

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


More information about the ghc-tickets mailing list