Как (оценить …) в библиотеке chicken r7rs?

#scheme #chicken-scheme #r7rs

#схема #курица-схема #r7rs

Вопрос:

Я пытаюсь заставить basic eval работать в библиотеке r7rs egg. Следующая программа верхнего уровня (не библиотека) работает так, как я ожидал, при запуске с 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)    <--
  

В чем может быть проблема? Кажется, были некоторые проблемы со средами R7RS в Wiki, но я не уверен, связано ли это здесь.

Протестировано с версией chicken 5.2.0 (пакет homebrew), как csi , так и csc .

Ответ №1:

Я спросил об этой проблеме в списке рассылки Chicken и сразу же получил помощь. Во-первых, для scheme-report-environment необходим дополнительный импорт

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

В Chicken также было две ошибки, которые были исправлены в течение одного дня (!) (см. Архив списка рассылки). С версией 1.0.3 r7rs egg eval теперь работает в библиотеке так, как ожидалось.