我试图学习LISP。我绕过了各种功能,我想用一些来测试自己。
我试图编写一个可以从给定索引中的列表中删除元素的函数。
这看起来非常简单,但我无法做到。
示例:我有列表(20 8 13 10),我想删除索引2处的数字。
我怎么会这样做?
答案 0 :(得分:1)
这很容易。这是基本情况:
(remove-nth 0 '(2 3)) ; => (3)
默认情况:
(remove-nth 1 '(1 2 3)) ; ==
(cons 1 (remove-nth 0 '(2 3)))
你唯一要做的就是实际实现它!
还有第三种情况。如果列表是nil
怎么办?从最严格的意义上说,你不能完成这项工作,你应该发出错误信号,或者也许没有任何事情要做,所以可以将它作为评估为'()
的基本案例。 (remove-nth 5 '(1 2)) ; ==> (1 2)