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)
我正在努力学习 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)