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