There are several identifiers that get introduced via expansion that TR needs 
to give types to. Not all are exported. Sam probably knows the reasons why they 
are not. I had to use the same code when concocting an analysis of racket core 
forms.
-Ian
----- Original Message -----
From: Matthias Felleisen <matth...@ccs.neu.edu>
To: Eric Dobson <eric.n.dob...@gmail.com>
Cc: dev <dev@racket-lang.org>
Sent: Thu, 23 May 2013 08:54:36 -0400 (EDT)
Subject: Re: [racket-dev] Constructing an identifier to an unexported binding


This has a scary feeling to it. 

Can you raise the level of discourse one level and perhaps figure out whether 
this is needed at all? I.e., find a different way to solve the problem? (What 
is the real problem?) 



On May 23, 2013, at 1:57 AM, Eric Dobson <eric.n.dob...@gmail.com> wrote:

> Some modules have macros which expand into identifiers that are not
> exported, as they want to protect those bindings. TR currently has the
> following code which allows it to generate an identifier which is
> free-identifier=? to what would appear in the output of the macros.
> 
> define (make-template-identifier what where)
>  (let ([name (module-path-index-resolve (module-path-index-join where #f))])
>    (parameterize ([current-namespace (make-empty-namespace)])
>      (namespace-attach-module (current-namespace) ''#%kernel)
>      (parameterize ([current-module-declare-name name])
>        (eval `(,#'module any '#%kernel
>                 (#%provide ,what)
>                 (define-values (,what) #f))))
>      (namespace-require `(for-template ,name))
>      (namespace-syntax-introduce (datum->syntax #f what)))))
> 
> This turns out to be a slightly slow part of the initialization of TR.
> Does anyone know another way to get such an identifier?
> _________________________
>  Racket Developers list:
>  http://lists.racket-lang.org/dev


_________________________
  Racket Developers list:
  http://lists.racket-lang.org/dev

_________________________
  Racket Developers list:
  http://lists.racket-lang.org/dev

Reply via email to