Skip to content
  • Simon Peyton Jones's avatar
    [project @ 2003-11-06 17:09:50 by simonpj] · 1f5e5580
    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.
    1f5e5580