#4429: Ability to specify the namespace in mkName
---------------------------------+------------------------------------------
    Reporter:  reinerp           |        Owner:              
        Type:  feature request   |       Status:  infoneeded  
    Priority:  normal            |    Milestone:  7.4.1       
   Component:  Template Haskell  |      Version:  6.12.3      
    Keywords:                    |     Testcase:              
   Blockedby:                    |   Difficulty:              
          Os:  Unknown/Multiple  |     Blocking:              
Architecture:  Unknown/Multiple  |      Failure:  None/Unknown
---------------------------------+------------------------------------------
Changes (by simonpj):

  * status:  patch => infoneeded


Comment:

 Replying to [comment:14 reinerp]:

 > This currently prints {{{["global","local","local","local"]}}}. Should
 the first two really give different results?

 Well, yes, that's the current deal.  '''All''' reify operations consult
 the environment at the point of the enclosing ''top-level'' splice.  For a
 more extreme example, consider
 {{{
 module M where
   funny :: Q Exp
   funny = do { Just n <- lookupValueName "f"; varE n }
   f :: Int
   f = 3

 module Top where
   import M
   me = $(funny)

   f :: Bool
   f = True
 }}}
 Here the `lookupValueName` consults the environment at the ''top-level
 splice'', which in this case in in module `Top`, not in `M`.  So the
 expanded code will bind to `Top.f` not to `M.f`.

 Doing anything else would be hard, and this is consistent with what
 happens for all other reification.

 None of this is documented.  If I could ask one last favour, would you
 feel able to expand (or re-structure) the user manual section about
 Template Haskell [http://www.haskell.org/ghc/docs/latest/html/users_guide
 /template-haskell.html]?  This could range from no-op, through at least
 documenting the key operations (like `reify`).

 Hmm.  A complementary (and perhpas better) alternative would be to look at
 the ridiculously scanty Haddock documentation in `Language.Haskell.TH`:
 http://www.haskell.org/ghc/docs/latest/html/libraries/template-
 haskell-2.6.0.0/Language-Haskell-TH.html.  Simply documenting the types
 and operations properly would be a huge step forward.

 Thanks for considering this.  Needless to say I'd be more than happy to
 answer queries that arise when doing so.

 Simon

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4429#comment:16>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to