I think I had a similar sort of problem about a year ago (I was at either RacketCon or a Hackathon that same weekend and Mathew Flatt figured it out), and the solution was changing (only-in path a) to (only-in path [a a]).
#lang racket/load ;;provider (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])) a)])) (test-binding 'T)) ;; go (require ‘R) On Nov 6, 2014, at 4:09 PM, Spencer Florence <spen...@florence.io> wrote: > 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 > ;;provider > (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. > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users