Работая над книгой Питера Сейбеля Practical Common Lisp, я столкнулся с трудностями в понимании того, как обращаться с системой пакетов Common Lisp в сочетании с Emacs SLIME и quicklisp. Проект, который он предоставляет, имеет следующую структуру:
spam.lisp
в пакетеcom.gigamonkeys.spam
, который зависит от двух других пакетов,cl-ppcre
иcom.gigamonkeys.pathnames
.pathnames.lisp
в упаковкеcom.gigamonkeys.pathnames
spam.asd
, в котором описаны зависимости пакетаcom.gigamonkeys.spam
pathnames.asd
, в котором описаны зависимости пакетаcom.gigamonkeys.pathnames
Единственный способ, который я нашел в настоящее время для создания конечной цели, spam.lisp, заключается в следующем:
- Скомпилируйте и загрузите файл
pathnames.asd
с помощью SLIME (C-x C-k
) - Загрузите пакет
com.gigamonkeys.pathname
, набрав(asdf:operate 'asdf:load-op 'spam)
в REPL. - Загрузите пакет
cl-ppcre
, набрав(ql:quickload "cl-ppcre")
в REPL. - Скомпилируйте и загрузите файл
spam.asd
с помощью SLIME. - Загрузите пакет
com.gigamonkeys.spam
, набрав(asdf:operate 'asdf:load-op 'spam)
в REPL
Это похоже на безумный объем работы, необходимый для использования функций, определенных в одном файле (spam.lisp
) - я должен делать что-то не так. Есть ли способ загрузить spam.lisp
и рекурсивно его зависимости с меньшим количеством команд?