Lisp 如何在列表的所有元素之间粘贴元素?
我想在列表的每个元素之间粘贴一个特殊元素。例如:Lisp 如何在列表的所有元素之间粘贴元素?,lisp,common-lisp,Lisp,Common Lisp,我想在列表的每个元素之间粘贴一个特殊元素。例如: (EINFUEGEN '(A B C) '*);-> (A * B * C) 如何以最简单的方式实现这一点?有趣的方式: (cdr (mapcan #'list '#1=(* . #1#) '(a b c))) 体面的方式: (loop for (x . xs) on '(a b c) collect x when xs collect '*) for on迭代所有子列表,这意味着var将绑定到(a b c),然
(EINFUEGEN '(A B C) '*);-> (A * B * C)
如何以最简单的方式实现这一点?有趣的方式:
(cdr (mapcan #'list '#1=(* . #1#) '(a b c)))
体面的方式:
(loop
for (x . xs) on '(a b c)
collect x
when xs collect '*)
迭代所有子列表,这意味着for on
将绑定到var
,然后(a b c)
然后(b c)
最后(c)
()
是一种分解符号,分别将(x.xs)
和x
绑定到所访问的每个列表的头部和尾部。这里有必要检查是否有剩余的元素xs
将collect
添加到正在生成的隐式集合中
仅在满足when
时执行循环子句
。在这里,我测试列表中是否有更多的元素;在这种情况下,我还收集星号
- 有趣的方式:
(cdr (mapcan #'list '#1=(* . #1#) '(a b c)))
体面的方式:
(loop
for (x . xs) on '(a b c)
collect x
when xs collect '*)
迭代所有子列表,这意味着for on
将绑定到var
,然后(a b c)
然后(b c)
最后(c)
()
是一种分解符号,分别将(x.xs)
和x
绑定到所访问的每个列表的头部和尾部。这里有必要检查是否有剩余的元素xs
将collect
添加到正在生成的隐式集合中
仅在满足when
时执行循环子句
。在这里,我测试列表中是否有更多的元素;在这种情况下,我还收集星号