9
假设我有一个单一的元素,并且我有一个谓词(函数)列表。我想将这些谓词应用到单个元素并获取相应的返回值列表。我知道map
和朋友可以对每个参数列表应用单个函数,但是是否有任何简洁的语法将多个函数应用于单个参数?Concise Lisp代码将所有函数列表应用于相同的参数并获取返回值的列表?
我当然可以做
(mapcar (lambda (pred) (funcall pred SINGLE-ELEMENT)) LIST-OF-PREDICATES)
但如果是工作就像一个功能,这将是很好:
(test-predicates-against-element LIST-OF-PREDICATES SINGLE-ELEMENT)
很显然,我可以只defun
,但我想知道有一个公认的方法来做到这一点。
我不明白CLHS对DYNAMIC-EXTENT有什么意见。该条目说,作为一个例子,一个实现可以选择堆栈分配这样声明的变量,并且显示堆栈分配defun的参数可能没有用。它在这里工作,因为参数是一个列表(所以已知大小)? – 2010-08-04 12:23:53
args是一个列表。此列表仅用于该函数内部,并未返回。因此,动态范围。如果支持,列表可以分配堆栈。从该功能返回后,该列表将被销毁,因此不需要GC时间。 – 2010-08-04 12:31:31