如何从 scribble/text 重新导出 #%module-begin 等?

How to re-export #%module-begin etc from scribble/text?

我想要一种像 scribble/text 这样的语言,但要提供一些额外的功能。这是我试过的:

#lang racket/base

(require scribble/text)
(provide (all-from-out scribble/text)
  hello)

(define (hello name)
  (format "Hello ~a!" name))

当我尝试 运行 用这种语言编写的模块时,我收到一条消息,指出模块语言中没有 #%module-begin 绑定。

我假设 scribble/text 具有对 #%module-begin 的绑定,否则当我将它用作 #lang 时它如何工作?

也许 scribble/text 知道我正在使用 'require' 而不是作为 #lang 导入它,所以我不会自动获取 #% 宏?如果是这样的话,那我如何获得它们并重新导出它们?

还是这里发生了其他事情?

#lang scribble/text 的语言和 (require scribble/text) 的库是不同的模块。库版本不提供 #%module-begin 或球拍的其他绑定:

When scribble/text is used via require instead of #lang, then .... it does not include the bindings of racket/base ....

module-language #lang scribble/text实际使用的是scribble/text/lang。所以你可以像这样修复你的module-language:

#lang racket/base

(require scribble/text/lang)
(provide (all-from-out scribble/text/lang)
         hello)

(define (hello name)
  (format "Hello ~a!" name))

但是,模块 scribble/text/lang 未记录,因此使用风险自负。