gpt4 book ai didi

racket - 如何从涂鸦/文本重新导出 #%module-begin 等?

转载 作者:行者123 更新时间:2023-12-01 00:12:14 24 4
gpt4 key购买 nike

我想要一种像涂鸦/文本这样的语言,但提供了一些额外的功能。这是我尝试过的:

#lang racket/base

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

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

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

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

也许 scribble/text 知道我使用 'require' 而不是 #lang 来导入它,所以我不会自动获取 #% 宏?如果是这种情况,那么我将如何获得它们并重新导出它们?

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

最佳答案

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

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



模块语言 #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是无证的,所以使用风险自负。

关于racket - 如何从涂鸦/文本重新导出 #%module-begin 等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57031677/

24 4 0
文章推荐: r - 如何在不同行中显示组名时聚合 data.frame
文章推荐: python - 如何在 numpy ndArray 中插入值?
文章推荐: javascript - 当单击子复选框 <input> 时,React/HTML 取消父
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com