Схема Чиби - Простой пример определения библиотеки не работает
Я написал следующий пример, пытаясь поэкспериментировать с библиотеками R7RS в схеме Chibi 0.5.3:
(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
Должно быть, я совершаю простую ошибку, но не вижу ее. Есть идеи?
2 ответа
Оказывается, это была простая ошибка - в соответствии с разделом " Система модулей " в руководстве пользователя, имя файла должно совпадать с именем модуля:
Определение модуля (foo bar baz) ищется в файле "foo/bar/baz.sld".
Таким образом, в этом случае приведенное выше определение библиотеки необходимо добавить в example/hello.sld
и раздел импорта должен быть извлечен в новый .scm
файл (или ввод в REPL и т. д.).
Во всяком случае, тривиальное решение, но, возможно, оно поможет кому-то еще там...
В целом, R7RS не определяет, как сделать библиотеки видимыми для системы Scheme, и значение кода, который смешивает define-library с другими формами Scheme, не определено.