[GHC] #9628: Add Annotations to the AST to simplify source to source conversions

GHC ghc-devs at haskell.org
Fri Oct 10 17:19:56 UTC 2014


#9628: Add Annotations to the AST to simplify source to source conversions
-------------------------------------+-------------------------------------
              Reporter:  alanz       |            Owner:  alanz
                  Type:  feature     |           Status:  new
  request                            |        Milestone:
              Priority:  normal      |          Version:  7.9
             Component:  Compiler    |         Keywords:
            Resolution:              |     Architecture:  Unknown/Multiple
      Operating System:              |       Difficulty:  Unknown
  Unknown/Multiple                   |       Blocked By:
       Type of failure:              |  Related Tickets:
  None/Unknown                       |
             Test Case:              |
              Blocking:              |
Differential Revisions:  D297        |
-------------------------------------+-------------------------------------

Comment (by NeilMitchell):

 Alan and I debated this point, and I was the one who suggested the many
 data types approach (although I wouldn't go as far as saying I advocate it
 - I'm somewhat neutral). My concern was that if you do the dynamic
 approach you have to document each one of those strings, and the
 documentation has to be correct or the users won't have a clue what is
 going on, and if you update it all your clients will break and no one will
 realise. The documentation will basically be as long as the data types,
 but won't be statically checked on either side, and will very likely end
 up being wrong.

 Maybe a hybrid approach is to have location information for keywords like
 "of", "case", "where", "(" and ")". You can have a fixed static
 enumeration of keywords, so you have type safety, and every keyword is
 optionally in every AST. The number of keywords is relatively small, and
 which keyword is contained within each AST node doesn't require
 documenting (the lexical structure makes it pretty obvious). You end up
 with no requirement for fragile docs, one data type with a fairly small
 number of entries, and reasonable safety for both the producer and
 consumer.

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


More information about the ghc-tickets mailing list