Chibi Scheme - 简单的定义库示例不起作用
Posted
技术标签:
【中文标题】Chibi Scheme - 简单的定义库示例不起作用【英文标题】:Chibi Scheme - Simple define-library example not working 【发布时间】:2012-05-13 11:08:16 【问题描述】:我编写了以下示例,试图在 Chibi Scheme 0.5.3 中试验 R7RS 库:
(define-library (example hello)
(export hello-world)
(import (scheme base))
(begin
(define (hello-world) "hello, world")))
(import (scheme write)
(example hello))
(write (hello-world))
不幸的是,在执行时,它会生成一个关于未定义变量的错误:
$ chibi-scheme hello.scm
ERROR: undefined variable: hello-world
我一定是犯了一个简单的错误,但没有看到。有什么想法吗?
【问题讨论】:
我认为你不需要从图书馆开始 @RossLarson:我认为begin
是R7RS define-library
表单的一部分,并指定了库的内容。
@ChrisJester-Young - 对,begin
是规范的一部分,用于 R7RS 示例和 Chibi 的库。
确实如此,我很抱歉。现在我想,我的经验是使用 r6rs 库,只是使用 (library ...) 并且相当有限。 (幸好我没有把它作为答案发布,哈哈)
【参考方案1】:
原来这是一个简单的错误 - 根据用户指南的Module System 部分,文件名必须与模块名称匹配:
模块的定义(foo bar baz)在文件“foo/bar/baz.sld”中搜索。
因此在这种情况下,需要将上述库定义添加到example/hello.sld
,并且需要将导入部分提取到新的.scm
文件中(或在 REPL 上输入等)。
无论如何,这是一个微不足道的解决方案,但也许它会对那里的其他人有所帮助......
【讨论】:
【参考方案2】:一般来说,R7RS 没有定义如何使库对 Scheme 系统可见,并且没有定义将 define-library 与其他 Scheme 形式混合的代码的含义。
【讨论】:
以上是关于Chibi Scheme - 简单的定义库示例不起作用的主要内容,如果未能解决你的问题,请参考以下文章