#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
теперь работает в библиотеке так, как ожидалось.