用于筛选列表并将函数应用于未筛选元素的常见Lisp习惯用法?
这方面的常见Lisp习惯用法是什么: 删除列表中不满足谓词和的元素 那些满足谓词的应用函数 这是常见的Lisp习惯用法吗:用于筛选列表并将函数应用于未筛选元素的常见Lisp习惯用法?,lisp,common-lisp,idioms,Lisp,Common Lisp,Idioms,这方面的常见Lisp习惯用法是什么: 删除列表中不满足谓词和的元素 那些满足谓词的应用函数 这是常见的Lisp习惯用法吗: mapcar applied to remove-if 习惯用法将结束,因为您希望保留与谓词匹配的元素。根据标准,-IF-NOT函数被弃用,但对于常见的Lisp,弃用大多是毫无意义的1,因此我们很少看到有人使用 然而,大多数人会在这里使用: over可能存在的一个问题是,它将为临时列表分配内存,以便在之后丢弃它。你可以称之为过早优化,但如果我想使用高阶函数(例如,因为我想
mapcar applied to remove-if
习惯用法将结束,因为您希望保留与谓词匹配的元素。根据标准,-IF-NOT
函数被弃用,但对于常见的Lisp,弃用大多是毫无意义的1,因此我们很少看到有人使用
然而,大多数人会在这里使用:
over可能存在的一个问题是,它将为临时列表分配内存,以便在之后丢弃它。你可以称之为过早优化,但如果我想使用高阶函数(例如,因为我想使用广义序列而不是列表),我会使用:
1.“所有标记为已弃用的内容都可以视为未弃用,因为不会有其他标准。”。
是的,如果+1将未被欣赏的地图提到地图中,则是mapcar过度删除。
(lambda (elements test function)
(loop
for e in elements
when (funcall test e)
collect (funcall function e)))
(lambda (elements test function)
(let ((tmp (remove-if-not test elements)))
(map-into tmp function tmp)))