[Template-haskell] RE: Template Haskell...
Alastair Reid
alastair at reid-consulting-uk.ltd.uk
Wed Oct 29 21:33:26 EST 2003
> Another thing that I'm really missing with the current Template Haskell
> is a "decent" way to pass state between different meta-functions. Let
> me provide a few examples of the things I want to do:
>
> [...]
>
> Manuel Chakravarty provided me with a nice workaround involving the use
> of (unsafePerformIO $ newIORef ...) global variables from the Q monad.
This is an absolutely essential feature. It's a critical part of Template
Greencard.
Unfortunately, the workaround (which is the same one I use) doesn't work with
ghc --make because the global variable doesn't get reset between modules. So
it tends to contain information from compiling whichever random set of
modules needed recompiling. The workaround for this is not to use --make.
It would also be nice to be able to pass state _between_ modules. For
example, in Template Greencard, I want to declare Data Interface Schemes
(rules for how to marshal objects to/from C) in one module and use them in
another module. This would, presumably, have to be done by providing a hook
where my TH code could provide things to include in .hi files and provide a
way for my TH code to ask ghc for them back. (This may be the same thing
that Wolfgang is asking for.)
--
Alastair Reid www.haskell-consulting.com
More information about the template-haskell
mailing list