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 - 简单的定义库示例不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 Chez Scheme 中重新导入库

帮助理解 Scheme 中的 Continuations

xml scheme 示例解析

Android 跨应用间调用: URL Scheme

ios 自定义URL Scheme启动App

自定义URL Scheme启动应用