> 1 <
Автор | Сообщение |
skelter
56 сообщений |
#6937 2013-03-03 18:14 GMT+3 часа(ов) |
Здравствуйте. У меня следующий нубский вопрос.
Предположим, я хочу создать пакет foolib, в котором определяется функция
Код пакета будет в файле foolib.lisp, который где-то лежит. И я хочу написать программу bar.lisp, которая делала бы следующее:
Я не могу толком нагуглить следующее: какой дополнительный код должен содержаться в файлах foolib.lisp и bar.lisp, чтобы второй из них нашёл первый. Или, точнее говоря, чтобы при компиляции второй файл нашёл скомпилированный первый. Для простоты можно предположить, что оба файла в одной папке. Буду благодарен за пояснения, ссылки или по крайней мере за ключевые слова. |
|
asvil
4 сообщений |
#6938 2013-03-04 15:04 GMT+3 часа(ов) |
Писал пару месяцев назад пост об этом, а сейчас оформил небольшой туториал.
http://filonenko-mikhail.blogspot.ru/2013/03/common-lisp.html |
|
skelter
56 сообщений |
#6939 2013-03-04 23:58 GMT+3 часа(ов) |
Спасибо, asvil.
Я пробую разобраться. Создаю папку, в ней создаю файлы utils.lisp и utils.asd, в которые копипащу код из туториала. В принципе, этими результатами труда я могу пользоваться (надеюсь) и без github-а. Однако что я должен делать? Например, я попробовал в той же папке создать test.lisp с содержанием
Не имею представления, насколько релевантны две первые строчки, но надо же было что-то написать. Файл всё равно не компилируется, а REPL выдаёт ошибку на первую строку: "Component utils not found". Заменил её (строку) на (asdf:operate 'asdf:load-op 'utils), как в Getting started with ASDF,& лучше не стало. |
|
asvil
4 сообщений |
#6940 2013-03-05 13:06 GMT+3 часа(ов) |
asdf должна знать где искать библиотеку, самый быстрый путь объяснить это ей так:
(setf asdf:*central-registry* "/path/to/library/") А потом да, можно делать use-package. |
|
skelter
56 сообщений |
#6941 2013-03-05 20:56 GMT+3 часа(ов) |
Заработало даже в таком "продвинутом" виде:
Хотя не без глюка: SBCL выдаёт
Впрочем, это, по-видимому, к загрузке пакетов не имеет отношения, потом буду разбираться. С самодельными пакетами вроде более-менее ясно. Теперь надо будет разобраться с системами, которые грузит quicklisp (куда он их сохраняет?..), ну а в первую очередь - читать мануал ASDF, раз всё делается через неё. Просто по сравнению с тем же Python-ом не очень-то интуитивно. Ну ладно, мы не ищем лёгких путей. ![]() Большое спасибо! |
|
asvil
4 сообщений |
#6942 2013-03-05 22:30 GMT+3 часа(ов) |
Системы quicklisp грузит в папку ~/quicklisp/dists
quicklisp ставит хук в asdf, и если asdf не нашла систему, ищет в своём репозитории. quicklisp также умеет находить/загружать пользовательские asdf системы, надо только их поместить в ~/quicklisp/local-projects. |
|
skelter
56 сообщений |
#6943 2013-03-05 23:17 GMT+3 часа(ов) |
Ага, то есть quicklisp на порядок сокращает необоходимость непосредственной работы с ASDF. Вот это достаточно культурно выглядит?
Наблюдается эффект: компилируется, только если сначала загрузить. Если не загружать, SBCL пишет "The name "LTK" does not designate any package", CLISP - тоже нечто подобное. Если в терминале писать clisp hwltk.lisp или clisp hwltk.fas, CLISP "не видит" и quicklisp. В целом кривовато (жалко, что в один приём не компилируется), но жить можно. Зато: скомпилированный SBCL-м код запускается, а если к нему присовокупить скрипт
(идея отсюда), получается настоящее standalone-приложение, даже по двойному клику - окошко без консоли. ![]() SBCL выходит вперёд в моём личном рейтинге. asvil, ещё раз спасибо. ![]() |
|
> 1 <