[GHC] #8761: Make pattern synonyms work with Template Haskell

GHC ghc-devs at haskell.org
Thu Oct 13 08:45:20 UTC 2016


#8761: Make pattern synonyms work with Template Haskell
-------------------------------------+-------------------------------------
        Reporter:  goldfire          |                Owner:  bollmann
            Type:  feature request   |               Status:  closed
        Priority:  normal            |            Milestone:  8.2.1
       Component:  Template Haskell  |              Version:  8.0.1
      Resolution:  fixed             |             Keywords:
                                     |  PatternSynonyms
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D1940
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by heisenbug):

 Replying to [comment:28 goldfire]:
 > Replying to [comment:27 heisenbug]:
 >> ''snip''
 > No, I don't believe that's possible, because TH doesn't allow "name
 splices". You'd have to build up the syntax manually, using the `Dec`
 constructors or the functions from `Language.Haskell.TH.Lib`.

 Oh, sure. I'd build as much as possible using a quote and then alter the
 name by a transformation on the ADT.
 {{{#!haskell
 Prelude Language.Haskell.TH> runQ [d| pattern Foo <- 42 where Foo = 43 |]
 [PatSynD Foo_0 (PrefixPatSyn []) (ExplBidir [Clause [] (NormalB (LitE
 (IntegerL 43))) []]) (LitP (IntegerL 42))]
 }}}
 Swapping out the `Foo_0` looks easy.

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


More information about the ghc-tickets mailing list