Я пытаюсь сохранить вывод (ql:system-apropos "regex")
в переменную, используя multiple-value-bind
, но у меня только nil
. Однако кажется, что эта команда только печатает текст в REPL и не возвращает никаких переменных, поэтому не работает. В этом случае есть ли способ получить вывод ql:system-apropos
в виде списка или массива, особенно имена пакетов, возвращаемые им.
Этот базовый код multiple-value-bind
работает:
* (multiple-value-bind (first-var second-var) (floor 5 3) (defparameter *first-var* first-var) (defparameter *second-var* second-var))
*SECOND-VAR*
* *first-var*
1
* *second-var*
2
*
Но это не так (если нечего биндить для multiple-value-bind
?):
* (multiple-value-bind (first-var second-var) (ql:system-apropos "regex") (defparameter *first-var* first-var) (defparameter *second-var* second-var))
#<SYSTEM com.informatimago.common-lisp.regexp / com.informatimago-20120407-git / quicklisp 2012-04-07>
#<SYSTEM lispbuilder-regex / lispbuilder-20110619-svn / quicklisp 2012-04-07>
#<SYSTEM recursive-regex / recursive-regex-20120407-git / quicklisp 2012-04-07>
#<SYSTEM recursive-regex-test / recursive-regex-20120407-git / quicklisp 2012-04-07>
#<SYSTEM regex / regex-1 / quicklisp 2012-04-07>
*SECOND-VAR*
* *first-var*
NIL
* *second-var*
NIL
*
Итак, кажется, что ql:system-apropos
печатает текст на экране только с помощью format
или какой-либо другой команды печати?
Целью этого будет извлечение имен пакетов вывода с помощью некоторых команд обработки строк (возможно, некоторых регулярных выражений) и автоматизация установки или переустановки всех пакетов, возвращаемых ql:system-apropos
, например:
(defparameter *package-name-string* "lispbuilder")
(multiple-value-bind (lispbuilder-packages-list) (ql:system-apropos *package-name-string*) (defparameter *lispbuilder-packages-list* lispbuilder-packages-list))
Любой другой способ получить quicklisp
имен пакетов, используя частичные имена или некоторые регулярные выражения в качестве входных данных, также будет рабочим решением (было бы полезно даже получить текущий полный список пакетов). Есть ли какое-либо жизнеспособное решение для этого?