#scheme #chicken-scheme
#схема #chicken-scheme
Вопрос:
У меня следующая структура проекта:
.
├── main.scm
└── stream
├── stream.import.scm
├── stream.scm
└── stream.so
stream.scm
определяет модуль:
; stream.scm
(module stream
(...)
(import scheme (chicken base))
...)
и main.scm
использует stream
модуль:
; main.scm
(import stream)
...
Я скомпилировал stream
через csc -s stream.scm -j stream
.
Я хотел бы скомпилировать модуль main.scm
с использованием stream
модуля, вложенного в stream
каталог, но я не могу найти способ сделать это.
Я прочитал справочную страницу и попытался
csc main.scm -I ./stream
но он выдает предупреждение
Warning: the following extensions are not currently installed: stream
и исполняемый файл не работает:
Error: (require) cannot load extension: stream
...
Это работает, когда я помещаю main.scm
в stream
каталог.
Что я должен сделать main.scm
, чтобы узнать о stream
модуле?
Ответ №1:
Я думаю, вы, вероятно, хотите установить CHICKEN_REPOSITORY_PATH
для этого проекта.
Пример:
~/dev/scheme/subdir_test$ chicken-install -repository
/home/richardh/dev/chicken/lib/chicken/11
~/dev/scheme/subdir_test$ export CHICKEN_REPOSITORY_PATH="/home/richardh/dev/chicken/lib/chicken/11:/home/richardh/dev/scheme/subdir_test/sub/"
~/dev/scheme/subdir_test$ cat alpha.scm
(import beta)
(print "Hello " (hello_name))
~/dev/scheme/subdir_test$ cat sub/beta.scm
(module beta (hello_name)
(import scheme)
(define (hello_name)
"World")
)
~/dev/scheme/subdir_test$ cd sub/
~/dev/scheme/subdir_test/sub$ csc -s beta.scm -j beta
~/dev/scheme/subdir_test/sub$ cd ..
~/dev/scheme/subdir_test$ csc alpha.scm
~/dev/scheme/subdir_test$ ./alpha
Hello World
Если вы загуглите «chicken scheme virtualenv», вы найдете несколько примеров более сложных версий этого.
Вас также могут заинтересовать яйца «куриный пояс» и «пыль» http://wiki.call-cc.org/chicken-projects/egg-index-5.html#tools если вы хотите установить несколько версий самого chicken.