如何从 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
未记录,因此使用风险自负。
我想要一种像 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 viarequire
instead of#lang
, then .... it does not include the bindings ofracket/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
未记录,因此使用风险自负。