[GHC] #10382: Template Haskell (non-quasi) quotes should work with stage 1 compiler

GHC ghc-devs at haskell.org
Tue May 5 15:06:13 UTC 2015


#10382: Template Haskell (non-quasi) quotes should work with stage 1 compiler
-------------------------------------+-------------------------------------
        Reporter:  ezyang            |                   Owner:  ezyang
            Type:  feature request   |                  Status:  new
        Priority:  normal            |               Milestone:  7.12.1
       Component:  Template Haskell  |                 Version:  7.11
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  None/Unknown      |  Unknown/Multiple
      Blocked By:                    |               Test Case:
 Related Tickets:                    |                Blocking:
                                     |  Differential Revisions:  Phab:D876
-------------------------------------+-------------------------------------

Comment (by ekmett):

 The current situation:

 On one hand I have a number of packages that provide `TemplateHaskell`
 convenience functions for users, `lens` being the go-to example. But on
 the other hand, I have a bunch of folks who maintain releases for my
 packages on platforms where only a stage1 compiler is available, Joachim
 Breitner and the Debian folks used to maintain patches and versions of my
 code that removed large chunks of the libraries to build on those
 platforms.

 When i found out, I offered to support stage1 compilers myself more
 directly. This ensured a more uniform API, and that different
 distributions weren't crippling my code in different ways, making it so
 certain combinators or modules just weren't available on certain
 platforms.

 But then we ran into an issue, we needed to generate names that linked to
 the right places within our code. So we manually construct all of our
 names ourselves, using the cabal-supplied version number or package key
 when needed:

 https://github.com/ekmett/lens/blob/9a247b52ed20e578d9c843d8cc6dad5433a1c186/src/Control/Lens/Internal/TH.hs#L104

 Then we just don't use the TemplateHaskell extension ourselves, despite
 linking against the `template-haskell` package and everything is good
 enough for us to limp along.

 I would love to eventually be able to drop this set of hoops, but I have
 few opinions on the best way to get there. That said, Edward's suggestion
 of making TemplateHaskell just bomb when you reach a splice site in stage1
 rather than immediately would avoid introducing any new flags and sounds
 pretty simple.

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


More information about the ghc-tickets mailing list