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

Racket 如何从scribble/text重新导出#%module begin等?,racket,scribble,Racket,Scribble,我想要一种像scribble/text这样的语言,但要提供一些附加功能。这就是我尝试过的: #朗格球拍/球座 (需要涂鸦/文字) (提供(全部来自涂鸦/文字) 你好) (定义(hello name) (格式为“Hello~a!”名称) 当我尝试运行用这种语言编写的模块时,我收到一条消息,说没有#%module begin绑定在该模块的语言中 我假设scribble/text对#%模块begin有一个绑定,否则当我将它用作#lang时它是如何工作的 也许scribble/text知道我是使用“r

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

#朗格球拍/球座
(需要涂鸦/文字)
(提供(全部来自涂鸦/文字)
你好)
(定义(hello name)
(格式为“Hello~a!”名称)
当我尝试运行用这种语言编写的模块时,我收到一条消息,说没有#%module begin绑定在该模块的语言中

我假设scribble/text对#%模块begin有一个绑定,否则当我将它用作#lang时它是如何工作的

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

或者这里发生了什么事?

的语言和
(需要涂鸦/文本)
的库是不同的模块。库版本不提供
#%module begin
或racket的其他绑定:

当通过
require
而不是
#lang
使用
scribble/text
时,则。。。。它不包括
球拍/球座的绑定

实际使用的模块语言是
scribble/text/lang
。因此,您可以按如下方式修复模块语言:

#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
没有文档记录,因此使用风险自负。

用这种语言编写的模块到底是什么意思?也就是说,另一个模块中的
#lang
行是什么样子的?原始模块位于名为notebook/main.rkt的文件中,第二个文件使用行“#lang notebook”写入其中。这有什么区别?很有效,谢谢。那么,这是一个“规则”吗?语言绑定是在一个名为“lang”的子模块中提供的,还是scribble/text正好是这样?scribble/text正好是这样,而不是规则