Lisp Append无法正常工作
嗨,我正在尝试将一个简单元素附加到lisp列表中Lisp Append无法正常工作,lisp,append,Lisp,Append,嗨,我正在尝试将一个简单元素附加到lisp列表中 (append queue1 (pop stack1)) 我认为上面的代码会将stack1的第一个元素附加到queue1。queue1是否需要为非零?谢谢。Append返回连接的列表(queue1,第一个元素为stack1)。它不修改队列1 append的破坏性等价物是NCOC:它将“就地”添加到列表中。您没有指定您指的是哪个Lisp,但在Common Lisp中至少: APPEND连接列表,因此其所有参数必须是列表,而不是原子。如果您真的想将
(append queue1 (pop stack1))
我认为上面的代码会将stack1的第一个元素附加到queue1。queue1
是否需要为非零?谢谢。Append返回连接的列表(queue1
,第一个元素为stack1
)。它不修改队列1
append的破坏性等价物是NCOC:它将“就地”添加到列表中。您没有指定您指的是哪个Lisp,但在Common Lisp中至少:
(append list1(list element))
。这不是一个好主意,因为在大多数Lisps中,列表是单链接的,必须遍历整个列表才能附加到末尾。通常会在前面加上CONS,然后在完成后反转列表,但这显然不适用于队列因此,要附加到列表中,我只需执行(nconc queue1'4)将数字4附加到列表queue1中。如果ncoc为nil,它还会追加吗?Thanksys,(NCOC queue1'4)将回收queue1。但是按照习惯,您仍然应该使用返回值,而不是依赖于副作用。抱歉,我不确定如果你通过了nil会发生什么(尽管我假设它在nil文本上不起作用):我想,启动你的Lisp实现,试试吧!您确实应该阅读一本介绍性书籍,将其附加到Lisp列表末尾不是一个好主意append返回一个附加了参数列表的列表-(append list1 list2 list3)->一个包含list1和list2元素的列表,list3将空列表附加到空列表