[GHC] #5972: option to suppress (Monomorphic) record selector functions

GHC ghc-devs at haskell.org
Wed Sep 7 09:15:15 UTC 2016


#5972: option to suppress (Monomorphic) record selector functions
-------------------------------------+-------------------------------------
        Reporter:  AntC              |                Owner:
            Type:  feature request   |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:
      Resolution:                    |             Keywords:  records
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by AntC):

 Thank you Adam for the implementation detail.

 Remember:
 * This ticket was raised 4+ years ago (strewth!) when there were huge
 debates raging about the "Records problem" and a great deal of nothing had
 been achieved. (It was even before PolyKinds and type-level Strings IIRC.)
 I wanted to free up some of the design space.
 * I am not an implementor, so what the ticket requests is in terms of an
 end-programmer's view.
 * My remarks just above (and back then) re field labels vs selectors are
 in terms of the language report [section 3.15]
    "[Field] Selectors are top level bindings ... This [name] shadowing
 only affects selector functions; in record construction (Section 3.15.2)
 and update (Section 3.15.3), field labels cannot be confused with ordinary
 variables."

 > When I read this ticket I didn't imagine that enabling this flag would
 allow duplicate field labels, ...

 No that wasn't the aim. I was merely aiming to avoid gobbling up the name
 space. DuplicateRecordFields is a different way to avoid it.

 > ... just suppress the generation of the field accessors.
 >
 > Anyway, this ticket was instructive because it showed how tightly
 intertwined the implementation is.

 Yes. Isn't it! I rather wish I hadn't found that out. We still seem a long
 way from a decent records system.

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


More information about the ghc-tickets mailing list