[racket] Macros that use local-require (hygiene issues?)

From: Spencer Florence (spencer at florence.io)
Date: Thu Nov 6 16:09:28 EST 2014

Hi All,

I've been struggling to have a macro be given a path then require something
from that path. The following code produces and "Unbound Identifier" error,
although I would expect it to evaluate to 1. Could someone provide insight
into what is going on?

#lang racket/load
(module T racket
  (provide a)
  (define a 1))
;; requirer
(module R racket
  (require (for-syntax syntax/parse))
  (define-syntax (test-binding stx)
    (syntax-parse stx
      [(_ path)
       #'(let () (local-require (only-in path a)) a)]))
  (test-binding 'T))
;; go
(require 'R)

P.S. I attempted to do this with `dynamic-require,` but that failed because
in my actual program `path` is sometimes `(submod "..")`, which caused an
error about not having a base path.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20141106/149f2b6a/attachment.html>

Posted on the users mailing list.