[GHC] #7828: RebindableSyntax and Arrow

GHC ghc-devs at haskell.org
Fri May 30 10:29:23 UTC 2014


#7828: RebindableSyntax and Arrow
----------------------------------------------+----------------------------
        Reporter:  AlessandroVermeulen        |            Owner:
            Type:  bug                        |  jstolarek
        Priority:  normal                     |           Status:  new
       Component:  Compiler (Type checker)    |        Milestone:  7.10.1
      Resolution:                             |          Version:  7.6.2
Operating System:  Unknown/Multiple           |         Keywords:
 Type of failure:  GHC rejects valid program  |     Architecture:
       Test Case:                             |  Unknown/Multiple
        Blocking:                             |       Difficulty:  Unknown
                                              |       Blocked By:
                                              |  Related Tickets:
----------------------------------------------+----------------------------

Comment (by jstolarek):

 > There really is no alternative to generating them all

 Yes, I am not questioning that.

 > What precisely is "above". I don't see a proposed design.

 I meant storing IDs of calls necessary for desugaring in the extra fields
 (or extra datatypes) of the constructors of `StmtLR`. Of course this
 assumes that it is correct to "desugar then typecheck" the arrow do-
 notation. After reading "A New Notation for Arrows" I feel this should be
 perfectly OK, just as it is OK for monadic do, but of course that's a
 layman's perspective.

 I have a few questions about implementation in `DsArrows` - I think these
 go to Ross.

   1. What is the purpose of the stack created in the desugaring process?
   2. How do I read the notation describing each case of `dsCmd`? Eg. the
 `HsCmdApp` case has this comment:

 {{{
 -- D; ys |-a cmd : (t,stk) --> t'
 -- D, xs |-  exp :: t
 -- ------------------------
 -- D; xs |-a cmd exp : stk --> t'
 --
 --        ---> premap (\ ((xs),stk) -> ((ys),(e,stk))) cmd
 }}}
 What is `|-a`, `xs` and `ys`? What is the difference between `:` and `::`?
 Could you tell me how to read this particular comment? I should then be
 able to understand all the others.

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


More information about the ghc-tickets mailing list