如何创建一个名为rnrs修改的库,使下面的代码显示"Hello,world!“?
#!r6rs
(import (rnrs-modified))
(display set!)或者即使这样也是好的(可以说更好,实际上):
#!r6rs
(import (rnrs) (modified)) ;or (import (modified) (rnrs))
(display set!)本质上,我希望能够在库中重新定义语法关键字(let、lambda、set!等),然后将该库导入到另一个库或顶级程序中,并使用这些重新定义的关键字。
不管怎么说,我总是得到这样的信息:
module: identifier already imported from a different source in:
set!
(lib "rnrs/main.ss")
(lib "rnrs-modified/main.ss")我使用的rnrs修改代码是:
#!r6rs
(library (rnrs-modified)
(export (rename (f set!)))
(import (rnrs))
(define f "Hello, world!"))有什么想法吗?
更新:我找到了“Update模块”的这。它不是针对r6rs方案的,但它提供的功能基本上就是我想要的。如何在provide all-from-except方案中实现r6rs?
发布于 2010-07-22 18:35:16
R6RS通过标识要自定义的库(不包括要自定义的部分),然后在您自己的库中定义这些部分,从而更有助于实现您的目标。下面是一个示例:
myrnrs.sls
(library
(myrnrs)
(export set!)
(import
(except (rnrs) set!)
(rename (rnrs) (set! rnrs-set!)))
(define set! "Hello, world."))test.scm
(import
(except (rnrs) set!)
(myrnrs))
(display set!)(newline) 不幸的是,除了在Racket中,没有什么比所有的都好;所以您可以创建一个库来重新定义set!,但是除了重新定义set之外,您还必须导入rnrs,然后输入所有这些绑定的导出!您阅读了更多关于这里的内容;具有讽刺意味的是,我也想创建一个没有set的库!
https://stackoverflow.com/questions/3301822
复制相似问题