Hi Tim, Thanks for the suggestion - that certainly would be fine as an interim solution, and I'll give it a try as soon as the declaration brackets are implemented. My impression is that they aren't there yet? For a permanent solution, it would still be nice to avoid the extra notation, but I'd certainly like to get most of the benefit for just a little work. Cheers, John On Mon, 2003-01-20 at 17:29, Tim Sheard wrote:
At 04:15 PM 1/20/2003 +0000, John O'Donnell wrote:
To support this kind of transformation, it would be necessary to allow top level definitions to be reified, but I think it might be best to go farther, and allow an entire module to be reified.
Can I suggest a simple work around for top-level function reification that we might strive for as an interim method. Why not do something like this
d1 = [d| f1 :: Clocked a => a -> a -> (a,a) f1 a b = (x, z) where (x,y) = (f2 a y, f3 b x) z = f4 a (f5 x y) z |]
f1 = splice d1
I.e. for every important function that you want to reify, define its representation, not the function itself. Then you can get the function by simply splicing in the representation. Now you have both the representation and the function, and they both flow from the same source so you know they're consistent. You can also manipulate the representation at will.
To make this practical we have to implement the declaration brackets [d| ... |] and everything else follows from what's already built.
Tim Sheard
_______________________________________________ template-haskell mailing list template-haskell@haskell.org http://www.haskell.org/mailman/listinfo/template-haskell