[GHC] #10189: explicit promotions of prefix data constructors can't be parsed naturally

GHC ghc-devs at haskell.org
Tue Mar 24 13:54:24 UTC 2015


#10189: explicit promotions of prefix data constructors can't be parsed naturally
-------------------------------------+-------------------------------------
              Reporter:  Kinokkory   |             Owner:
                  Type:  bug         |            Status:  new
              Priority:  normal      |         Milestone:
             Component:  Compiler    |           Version:  7.8.4
  (Parser)                           |  Operating System:  Unknown/Multiple
              Keywords:              |   Type of failure:  GHC rejects
          Architecture:              |  valid program
  Unknown/Multiple                   |        Blocked By:
             Test Case:              |   Related Tickets:
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------
 When used as an infix operator, a data constructor is explicitly promoted
 simply with `'` prefixed, but when used as a prefix operator enclosed
 between `(` and `)`, it is explicitly promoted only with `'` put before
 `(`, not before the constructor.

 On the other hand, messages of GHC and GHCi indicate that a data
 constructor operator in a prefix form is promoted by putting `'` before
 the constructor! (as in `forall (k :: BOX) (k :: BOX). (':*)` below.)

 I believe that this is a matter of parsing. The parser should admit
 `(':*)` as well as `'(:*)` for the naturalness of the syntax.

 In a GHCi:

 {{{#!hs
 > :set -XDataKinds -XTypeOperators
 > data a :* b = a :* b
 > :kind! Int :* Int
 Int :* Int :: *
 = Int :* Int
 > :kind! Int ':* Int
 Int ':* Int :: * :* *
 = Int ':* Int
 > :kind! (:*)
 (:*) :: * -> * -> *
 = (:*)
 > :kind! '(:*)
 '(:*) :: k -> k1 -> k :* k1
 = forall (k :: BOX) (k :: BOX). (':*)
 > :kind! (':*)

 <interactive>:1:3: parse error on input ‘:*’
 }}}

 (By the way I assume that Template Haskell quotes (`'function` and
 `''Type`) are parsed by the same mechanism as the one for the explicit
 promotion syntax. I hope both styles of quotes for prefix operators will
 be admitted because currently only the `'(` `''(` style is admitted.)

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


More information about the ghc-tickets mailing list