我可以使用prefix-out
重命名我导出的标识符,使其具有相似的前缀。例如:
#lang racket
(provide (prefix-out mymod: (all-defined-out)))
(define x 5)
(define y 6)
现在mymod:x
和mymod:y
应绑定到该文件中的x
和y
。
是否有类似的方法为模块导出的所有标识符添加后缀?所以我可以做类似的事情:
#lang racket
(provide (suffix-out -from-mymod (all-defined-out)))
(define x 5)
(define y 6)
现在任何需要此模块的模块都会在此模块中x-from-mymod
和y-from-mymod
绑定到x
和y
。
答案 0 :(得分:3)
您可以将filtered-out
用于此目的:
(require (for-syntax racket/base
racket/provide-transform
syntax/parse)
racket/provide)
(define-syntax suffix-out
(make-provide-transformer
(lambda (stx modes)
(syntax-parse stx
[(_ suffix:id provide-spec)
(expand-export
#'(filtered-out (lambda (name)
(string-append name (symbol->string 'suffix)))
provide-spec)
modes)]))))