两个问题:在common-lisp中,如何将元素插入到列表中?
1.I想要的功能插入就地列表中的元素(在任意位置,但在列表的开始,见问题2的原因),使得:
CL> (defun insert-in-place (the-list after-position new-element) ....) => ...
CL> (setf testy-list (list 'a 'b 'c 'd)) => ...
CL> testy-list => ('A 'B 'C 'D)
CL> (insert-in-place testy-list 1 'BOOOO) => ...
CL> testy-list => ('A 'B 'BOOOO 'C 'D)
2.我认为通过函数在列表的开始处插入一个元素是不可能的,因为这些参数是按值传递的,所以由于列表的第一个cons单元格被传递,所以它是通过值传递的它是一个副本,所以改变它的车只会改变一辆复制车,而不是原来的车,尽管下面的cons单元是共享的,并且可以在原地进行改变。我对么?
谢谢。关于问题2:当你打电话(修改测试列表)什么是正在传递修改?测试列表的第一个cons单元是值还是参考?我的意思是你回答说我是不正确的,但我无法找到我关于问题2的论点中的缺陷...... – Paralife 2010-12-08 14:22:18