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

Simon Peyton Jones simonpj at microsoft.com
Fri May 8 14:08:06 UTC 2015

Edward (Yang)

I'm on a train so can't say this on Trac.

I'm OK with enabling quotes (*not* quasiquotes) in stage1.  Both typed and untyped quotes should work, correct?

I'd rather it was done by using TemplateHaskell, and complaining if you use splices or quasi-quotes in stage1.  (That is very much what happens now.)  No new flags.

Could the user manual briefly mention this?  (Briefly because most users won't even know what a stage1 compiler is.)

Could you add a Note somewhere appropriate to explain this?
Perhaps mention the ticket, because Edward K's motivation is useful.
Refer to the Note anywhere appropriate.

Go for it.


| -----Original Message-----
| From: ghc-tickets [mailto:ghc-tickets-bounces at haskell.org] On Behalf Of
| Sent: 05 May 2015 16:06
| Cc: ghc-tickets at haskell.org
| Subject: Re: [GHC] #10382: Template Haskell (non-quasi) quotes should
| work with stage 1 compiler
| #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/9a247b52ed20e578d9c843d8cc6dad5433a1c
| 186/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
| _______________________________________________
| ghc-tickets mailing list
| ghc-tickets at haskell.org
| http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-tickets

More information about the ghc-devs mailing list