Emacs Lisp 中 'delete' 和 'remove' 有什么区别

what's difference between 'delete' and 'remove' in Emacs Lisp

我正在通过阅读别人的代码来学习 Elisp。然后我发现人们同时使用 deleteremove 从序列中删除元素。我检查了文档和 remove 的代码,它只是 delete 的包装器,当序列是列表时,执行 copy-sequence

复制列表来执行 delete 真的很重要吗?或者我可以只使用 delete 这是一个 C 命令,我认为这应该更有效。

remove returns

a copy of seq with all occurrences of elt removed.

delete

delete[s] by side effect any occurrences of elt as a member of seq.

因此它修改了原始序列。 (除非第一个元素命中,所以请参阅 C-hf 删除以获取完整详细信息。)