- 06 Nov, 2003 1 commit
-
-
simonpj 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.
-
- 06 Jun, 2003 1 commit
-
-
igloo authored
Update tests for renamings.
-
- 21 May, 2003 1 commit
-
-
igloo authored
The Great Renaming. I hope I've kept everything in sync - and all the tests pass. Now datatypes follow the data Foo = <a kind of Foo>Foo | <another kind of Foo>Foo convention and the smart constructors can be uniformly created by lowercasing the first letter of the constructor.
-
- 03 May, 2003 1 commit
-
-
igloo authored
Update testsuite in line with recent TH changes. Added a couple of cases to TH_repE1 and added a new TH_repE2 that also splices things back in and checks they can be printed correctly.
-
- 21 Nov, 2002 1 commit
-
-
chak authored
Renaming function for the reify/splice test needs to be in a separate module
-