我编写了以下示例,试图在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
我必须犯一个简单的错误,但不要看到它。有什么想法吗?
答案 0 :(得分:4)
原来这是一个简单的错误 - 根据用户指南的Module System部分,文件名必须与模块名称匹配:
在文件" foo / bar / baz.sld"中搜索模块的定义(foo bar baz)。
因此,在这种情况下,需要将上面的库定义添加到example/hello.sld
,并且需要将导入部分提取到新的.scm
文件中(或者在REPL上输入等)。
无论如何,这是一个微不足道的解决方案,但也许对那里的其他人有帮助......
答案 1 :(得分:2)
通常,R7RS没有定义如何使Scheme对Scheme系统可见,并且没有定义将define-library与其他Scheme表单混合的代码的含义。