Схема Чиби - Простой пример определения библиотеки не работает

Я написал следующий пример, пытаясь поэкспериментировать с библиотеками 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, не определено.

Другие вопросы по тегам