Lisp 将ql:system apropos返回的包名存储到变量中

Lisp 将ql:system apropos返回的包名存储到变量中,lisp,common-lisp,quicklisp,Lisp,Common Lisp,Quicklisp,我试图使用多值绑定将(ql:system-apropos“regex”)的输出保存到一个变量,但我只保存了nil。但是,这个命令似乎只将文本打印到REPL,并且不返回任何变量,因此似乎不起作用。在这种情况下,是否有任何方法可以将ql:system apropos的输出作为列表或数组,尤其是它返回的包名 这个基本的多值绑定代码工作: * (multiple-value-bind (first-var second-var) (floor 5 3) (defparameter *first-var*

我试图使用
多值绑定将
(ql:system-apropos“regex”)
的输出保存到一个变量,但我只保存了
nil
。但是,这个命令似乎只将文本打印到REPL,并且不返回任何变量,因此似乎不起作用。在这种情况下,是否有任何方法可以将
ql:system apropos
的输出作为列表或数组,尤其是它返回的包名

这个基本的
多值绑定
代码工作:

* (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
*
但这并不是(如果没有要为
多值绑定绑定的内容
?):


使用部分名称或某些正则表达式作为输入来获取
quicklisp
包名的任何其他方法也是一种有效的解决方案(即使获取当前完整的包列表也会很有用)。有什么可行的解决方案吗?

您与Common Lisp的交互看起来太复杂了

您会问:将ql:system apropos返回的包名存储到一个变量中

它真的返回了什么吗?还是只打印一些东西

你很容易发现。我在我的示例中使用了
CL:APROPOS

CL-USER 141 > (apropos "plist" "CL")
SYMBOL-PLIST (defined)
MAPLIST (defined)
请描述返回值:

CL-USER 142 > (describe (apropos "plist" "CL"))
SYMBOL-PLIST (defined)
MAPLIST (defined)
NIL is a NULL
NAME          "NIL"
VALUE         NIL
FUNCTION      #<unbound function>
PLIST         (TYPE::DIRECT-TYPE-PREDICATE TYPE::RETURN-FALSE)
PACKAGE       #<The COMMON-LISP package, 2/4 internal, 978/1024 external>
现在您得到了一个字符串,可以对其进行解析。

谢谢。这是有效的:
(defparameter*lispbuilder包列表*(输出为字符串(*标准输出*)(ql:system apropos“lispbuilder”))
CL-USER 141 > (apropos "plist" "CL")
SYMBOL-PLIST (defined)
MAPLIST (defined)
CL-USER 142 > (describe (apropos "plist" "CL"))
SYMBOL-PLIST (defined)
MAPLIST (defined)
NIL is a NULL
NAME          "NIL"
VALUE         NIL
FUNCTION      #<unbound function>
PLIST         (TYPE::DIRECT-TYPE-PREDICATE TYPE::RETURN-FALSE)
PACKAGE       #<The COMMON-LISP package, 2/4 internal, 978/1024 external>
CL-USER 143 > (with-output-to-string (*standard-output*)
                (apropos "plist" "CL"))
"SYMBOL-PLIST (defined)
MAPLIST (defined)"