RE: [Template-haskell] Re: template-haskell names in 6.3
Reasonable idea. I've added nameModule :: Name -> Maybe String to join the existing nameBase :: Name -> String The 'Maybe' is needed because not all names have modules; in particular, ones that are made with mkName or newName. OK? Simon | -----Original Message----- | From: template-haskell-bounces@haskell.org [mailto:template-haskell-bounces@haskell.org] On | Behalf Of Keean Schupke | Sent: 03 December 2004 11:00 | To: Simon Peyton-Jones | Cc: template-haskell@haskell.org | Subject: [Template-haskell] Re: template-haskell names in 6.3 | | Simon Peyton-Jones wrote: | | Right... I had a good look through the library source, but must have | missed it... | It seems the functions to build and extract the 'module' part of Names | is not | exported... is there any reason why it can't be? | | Keean. | | >Acutally it's there already: | > qCurrentModule :: Q String | > | >Simon | > | >| -----Original Message----- | >| From: Keean Schupke [mailto:k.schupke@imperial.ac.uk] | >| Sent: 02 December 2004 17:37 | >| To: Simon Peyton-Jones | >| Subject: Re: template-haskell names in 6.3 | >| | >| Simon Peyton-Jones wrote: | >| | >| Okay I want a globaly unique label, so I want to prepend the module | >name | >| to the string... | >| | >| module SomeLib.MyModule where | >| | >| $(label "myLabel") -- splices: myLabel = "SomeLib.MyModule.myLabel" | >| | >| I guess what I want is a reifyModuleName? | >| | >| Keean. | >| | >| >| -----Original Message----- | >| >| From: MR K P SCHUPKE [mailto:k.schupke@imperial.ac.uk] | >| >| Sent: 22 October 2004 13:05 | >| >| To: glasgow-haskell-users@haskell.org; Simon Peyton-Jones | >| >| Subject: template-haskell names in 6.3 | >| >| | >| >| | >| >| I have now read most of the notes on template-haskell2, but I still | >| >| have a problem with naming (although I think my issues with types | >| >| are adequately dealt with by the '' notation. | >| >| | >| >| I wish to create a declaration in template haskell, where the | >funtion | >| >| name is supplied: something like: | >| >| | >| >| $(label "myLabel") | >| >| | >| >| However I wish the reference to this label to be globally specific | >| >| to the generated instance... an example of this would be a function | >| >| that prints its reified name: | >| >| | >| >| $(example "myLabel") would splice: | >| >| | >| >| myLabel :: String | >| >| myLabel = "This_module.myLabel" | >| >| | >| >| mkName only returns the 'local' namem | >| >| how can I get a global name from a string? | >| >| | >| >| Keean. | >| > | >| > | > | > | | _______________________________________________ | template-haskell mailing list | template-haskell@haskell.org | http://www.haskell.org/mailman/listinfo/template-haskell
Simon Peyton-Jones wrote:
Reasonable idea. I've added
nameModule :: Name -> Maybe String to join the existing nameBase :: Name -> String
The 'Maybe' is needed because not all names have modules; in particular, ones that are made with mkName or newName.
OK?
That looks great - one final request is there any problems with exporting a generic constructor for these two part Names... like: mkNameG :: String -> String -> Name or perhaps makeName :: Maybe String -> String -> Name which would make either a local name or a global name depending on whether a module name were specified... Keean.
participants (2)
-
Keean Schupke -
Simon Peyton-Jones