Для макроса test
вы уверены, что вам нужно сгенерировать require
из макроса? Вы можете сделать так, чтобы макрос test
генерировал использование pretty-print
, если racket/pretty
требуется в файле, который определяет test
, и тогда не имеет значения, есть ли потребность в файле, который использует test
.
Например, если у вас есть два файла macro.rkt
и use.rkt
:
файл macro.rkt
:
#lang racket
(provide test)
(require racket/pretty
syntax/parse/define)
(define-simple-macro (test fn:id args:expr)
(module+ test
(define testcases args)
(for ([test testcases])
(pretty-print (fn test)))))
file use.rkt
:
#lang racket
(require "macro.rkt")
(provide foo)
(define (foo x) (+ 1 x))
;; unit tests
(test foo '(2 3 4))
Тогда ссылка на pretty-print
работает в выводе макроса, хотя обычно не доступна вuse.rkt
. Это работает, потому что pretty-print
получает область действия от сайта определения макроса, а не от сайта использования.
Работает ли это для вашей проблемы?