LISP 如何从列表中删除特定索引处的元素

LISP How to remove element at certain index from a list

我正在努力学习 LISP。我了解了函数,我想用一些函数来测试自己。

我正在尝试编写一个可以从给定索引的列表中删除元素的函数。

这看起来很简单,但我做不到。

示例:我有列表 (20 8 13 10),我想删除索引 2 处的数字。

我该如何处理这样的事情?

这很容易。这是基本情况:

(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)