RE: mkName and qualified names
Template Haskell folk I've fixed several bugs in Template Haskell, and made minor changes as follows * Two bugs reported by Duncan Coutts - do {d <- runQ $ [| let foo = bar where bar = 3 in foo |]; print d} used to panic - using newName "foo" twice gave rise to duplicate-binding warning * Make Language.Haskell.TH export dyn :: String -> ExpQ, as advertised in "note2" * Give an explicit export list to Language.Haskell.TH, so that it no longer exposes random helper functions from inside TH.Lib, say. I may have inadvertently hidden something useful, so please yell if so * Arrange that mkName (and hence dyn) understand qualified names. So dyn "Maybe.isJust" will now generate the qualified name, as you might expect. All of this in the HEAD only, of course. Keep pinging if there are bugs you trip over. And what is the top priority for improvement? Simon | -----Original Message----- | From: George Russell [mailto:ger@informatik.uni-bremen.de] | Sent: 02 April 2004 10:12 | To: Simon Peyton-Jones | Subject: Re: mkName and qualified names | | Simon Peyton-Jones wrote: | > Ah, indeed so. Apologies. | > | > The constructor Var is actually called VarE. | > | > And "dyn" should be defined but isn't. I was wrong to say the mkName | > won't do the job -- it will. But as you found, it doesn't work for | > qualified names. It probably should. (Or maybe "dyn" should but mkName | > should not, because dyn is only used for *occurrences* whereas mkName | > makes a name that you can use for binding too. It wouldn't make sense | > to say | > let n = mkName "A.x" in LamE (VarP n) (VarE n) | | Don't you bind a qualified name in a record or class declaration sometimes, | for example | x = M.A {M.b = True} | or | instance M.A B where | M.c = True | | Or is that something different? | | just checking, | | George
participants (1)
-
Simon Peyton-Jones