Support code for quasi-quotation feature
authorsimonpj@microsoft.com <unknown>
Fri, 18 Jan 2008 15:10:16 +0000 (15:10 +0000)
committersimonpj@microsoft.com <unknown>
Fri, 18 Jan 2008 15:10:16 +0000 (15:10 +0000)
commit164d14e1fca14b09e1d435fced8c8ce3fcc1df81
tree98d44731f26c8a64b7d7919bb444c6f411e75490
parent6758b39fdb68c1b15de73fdaaf5a900cf0447fb7
Support code for quasi-quotation feature

This patch supports the quasi-quotation feature.  Here's the relevant
parts from the message in the big compiler patch:

  Fri Jan 18 14:55:03 GMT 2008  simonpj@microsoft.com
    * Add quasi-quotation, courtesy of Geoffrey Mainland

  This patch adds quasi-quotation, as described in
    "Nice to be Quoted: Quasiquoting for Haskell"
   (Geoffrey Mainland, Haskell Workshop 2007)
  Implemented by Geoffrey and polished by Simon.

...snip...

  * There is an accompanying patch to the template-haskell library. This
    involves one interface change:
   currentModule :: Q String
    is replaced by
   location :: Q Loc
    where Loc is a data type defined in TH.Syntax thus:
        data Loc
          = Loc { loc_filename :: String
         , loc_package  :: String
         , loc_module   :: String
         , loc_start    :: CharPos
         , loc_end      :: CharPos }

        type CharPos = (Int, Int) -- Line and character position

    So you get a lot more info from 'location' than from 'currentModule'.
    The location you get is the location of the splice.

    This works in Template Haskell too of course, and lets a TH program
    generate much better error messages.

  * There's also a new module in the template-haskell package called
    Language.Haskell.TH.Quote, which contains support code for the
    quasi-quoting feature.
libraries/template-haskell/Language/Haskell/TH.hs
libraries/template-haskell/Language/Haskell/TH/Quasi.hs [new file with mode: 0644]
libraries/template-haskell/Language/Haskell/TH/Syntax.hs
libraries/template-haskell/template-haskell.cabal