Naz*_*riy 0 lisp merge list common-lisp
我试图将所有列表列表合并为一个.
到目前为止,这是我的代码:
(DEFUN DESCRIPTION (BLOCK)
(loop initially (setf result '())
for desc in (DESC2 BLOCK)
do (append result desc)
finally (return result)
)
)
Run Code Online (Sandbox Code Playgroud)
函数(DESC2 BLOCK)返回以下内容:
((SHAPE BRICK) (COLOR GREEN) (SIZE SMALL) (SUPPORTED-BY B2) (SUPPORTED-BY B3))
Run Code Online (Sandbox Code Playgroud)
我只需要函数返回一个合并列表:
(SHAPE BRICK COLOR GREEN SIZE SMALL SUPPORTED-BY B2 SUPPORTED-BY B3)
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多方法并且已经研究了很多.我很抱歉,但我不完全了解LISP语言,如果你能帮助我,我将不胜感激!
先感谢您!
只需将子列表附加到LOOP:
CL-USER 23 > (loop for l in '((SHAPE BRICK) (COLOR GREEN) (SIZE SMALL)
(SUPPORTED-BY B2) (SUPPORTED-BY B3))
append l)
(SHAPE BRICK COLOR GREEN SIZE SMALL SUPPORTED-BY B2 SUPPORTED-BY B3)
Run Code Online (Sandbox Code Playgroud)
或者REDUCE用来APPEND
CL-USER 24 > (reduce #'append
'((SHAPE BRICK) (COLOR GREEN) (SIZE SMALL)
(SUPPORTED-BY B2) (SUPPORTED-BY B3)))
(SHAPE BRICK COLOR GREEN SIZE SMALL SUPPORTED-BY B2 SUPPORTED-BY B3)
Run Code Online (Sandbox Code Playgroud)
或使用 MAPCAN
CL-USER 25 > (mapcan #'copy-list
'((SHAPE BRICK) (COLOR GREEN) (SIZE SMALL)
(SUPPORTED-BY B2) (SUPPORTED-BY B3)))
(SHAPE BRICK COLOR GREEN SIZE SMALL SUPPORTED-BY B2 SUPPORTED-BY B3)
Run Code Online (Sandbox Code Playgroud)
MAPCAN 将函数映射到列表并破坏性地连接结果列表.因此用于COPY-LIST复制子列表.
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |