• Simon Peyton Jones's avatar
    [project @ 2003-11-06 17:09:59 by simonpj] · 5ed4d1e2
    Simon Peyton Jones authored
    	Major increment for Template Haskell
    1.  New abstract data type "Name" which appears where String used to be.
        E.g. 	data Exp = VarE Name | ...
    2.  New syntax 'x and ''T, for quoting Names.  It's rather like [| x |]
        and [t| T |] respectively, except that
    	a) it's non-monadic:  'x :: Name
    	b) you get a Name not an Exp or Type
    3.  reify is an ordinary function
    	reify :: Name -> Q Info
        New data type Info which tells what TH knows about Name
    4.  Local variables work properly.  So this works now (crashed before):
    	f x = $( [| x |] )
    5.  THSyntax is split up into three modules:
      Language.Haskell.TH		TH "clients" import this
      Language.Haskell.TH.THSyntax	data type declarations and internal stuff
      Language.Haskell.TH.THLib	Support library code (all re-exported
    				by TH), including smart constructors and
    				pretty printer
    6.  Error reporting and recovery are in (not yet well tested)
    	report :: Bool {- True <=> fatal -} -> String -> Q ()
    	recover :: Q a -> Q a -> Q a
    7.  Can find current module
    	currentModule :: Q String
    Much other cleaning up, needless to say.