如何在鸡 r7rs 库中(eval ...)?

How to (eval ...) in a chicken r7rs library?

我正在尝试让一个基本的 evalr7rs egg 的库中工作。以下 toplevel(不是库)程序按我的预期工作,当 运行 和 csi -R r7rs 时:

(import (scheme base)
        (scheme eval))

(eval '42 (scheme-report-environment 5))

这也适用于 (null-environment 5)(但不适用于 (environment '(scheme base) ...) 变体)。但是,在图书馆内:

(define-library (test-eval)
  (import
    (scheme base)
    (scheme eval))
  (export
    my-eval)
  (begin
    (define (my-eval)
      (eval '42 (scheme-report-environment 5)))))

我明白了

Error: module unresolved: test-eval
....
<syntax>          [my-eval] (scheme-report-environment 5)
<syntax>          (##core#begin)
<syntax>          (##core#undefined)    <--

可能是什么问题? Wiki 中的 R7RS 环境似乎存在一些问题,但我不确定这是否与此处相关。

使用 chicken 版本 5.2.0(自制程序包)进行测试,csicsc

我在 Chicken 邮件列表上询问了这个问题,并立即得到了帮助。首先,对于scheme-report-environment,需要额外导入

(import
   (scheme base)
   (scheme eval)
   (only (scheme r5rs) scheme-report-environment))

Chicken 中还有两个错误 - 已在一天内修复 (!)(请参阅 mailing list archive)。使用 r7rs egg 的 1.0.3 版本,eval 现在可以在库中正常工作。