(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
部分的な名前または正規表現を入力として使用してパッケージ名を取得する他の方法も有効な解決策です (パッケージの現在の完全なリストを取得することも役立ちます)。これを行うための実行可能な解決策はありますか?