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