Я в настоящее время пытаюсь обернуть голову вокруг пакетов, систем & co.Структурирование больших приложений Lisp
Я сейчас несколько раз читал Packages, systems, modules, libraries - WTF?, и я думаю, что у меня все еще есть трудности, чтобы понять это правильно.
Если я просто хочу разбить исходный файл Lisp на два файла, где один должен «использовать» другой - как это сделать? Нужно ли мне строить систему для этого? Должен ли я использовать модуль? ...? Я иду от фона Node.js, и вы можете просто сказать
var foo = require('./foo');
, чтобы получить ссылку на то, что экспортируется в файл foo.js
. Что самое близкое к этому в Lisp?
Я понимаю, что ASDF для систем, и что она поставляется как часть Quicklisp, по крайней мере, в соответствии с документацией:
ASDF поставляется в комплекте со всеми последними релизами активных реализаций Common Lisp, а также с быстрым доступом [...]
Хорошо, Quicklisp предназначен для библиотек, но каковы их отношения? Является ли Quicklisp чем-то вроде «менеджера пакетов» на других языках? И если да, то что именно предоставляет ASDF?
Извините за эти много вопросов, но я думаю, что это просто показывает, что я должен понять, как структурировать приложения Lisp. Любая помощь была бы принята с благодарностью :-)
Кроме того, прочитав http://www.flownet.com/gat/packages.pdf и http://www.gigamonkeys.com/book/programming-in- the-large-packages-and-symbols.html помогли понять пакеты. Спасибо :-) –
Rainer, почему вы используете цитаты вокруг «бесплатно», касающиеся ASDF? –
Кроме того, ASDF 3.1 не поддерживает стиль быстрой сборки/faslpath с более легким весом при построении системы, где существует взаимно однозначное соответствие между файлами и пакетами и системами. –