RE: mkName and qualified names
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) ) So that's something I should fix. But meanwhile, the unqualified version works just fine mkTyConApp2 = $( varE . mkName $ "mkTyConApp" ) Simon | -----Original Message----- | From: George Russell [mailto:ger@informatik.uni-bremen.de] | Sent: 01 April 2004 16:03 | To: George Russell | Cc: Simon Peyton-Jones | Subject: Re: mkName and qualified names | | George Russell wrote: | > Simon Peyton-Jones wrote: | > | >> If you read "Notes about TH v2" you'll see that if you want something | >> that is *not* lexically scoped, you can use | >> $(dyn "x") | >> inside quotes. Section 4.4 dicssusses | > | > | > "dyn" doesn't seem to be exported by Language.Haskell.TH in the HEAD | > version. | | ... | | and while "Notes about TH v2" defines "dyn s = return (Var (mkName s))", | I can't do that because Language.Haskell.TH in the HEAD version doesn't | export Var either. I did use "varE" in my original example. | | best wishes, | | George
participants (1)
-
Simon Peyton-Jones