[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.dobson at 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