2015-04-01 103 views
-1

循環通過列表,我現在有一個方法,我不斷做調用它下面Lisp語言的功能

(function1 (first lst)) 

(function1 (second lst)) 

(function1 (third lst)) 

這正好五年。我想知道是否有一個我可以創建的函數可以爲我創建,所以當創建時我調用一個方法而不是調用它五次。

+1

你的用例似乎更適合映射比循環。您可能想了解[映射功能](http://www.lispworks.com/documentation/HyperSpec/Body/f_mapc_.htm)。 – 2015-04-01 11:55:57

回答

4

鑑於您之前的問題,我建議您調查mapcarreduce並嘗試感受它們。

如果你更習慣於循環,他們需要一點習慣,但他們通常是更好的解決方案。

例如:

(mapcar #'function lst) 

將調用列表返回結果列表中的每個元素的功能。

+0

另請參閱我對[您的上一個問題](http://stackoverflow.com/a/29390115/574033)的答案,瞭解如何使用這些示例的示例。 – Baggers 2015-04-01 12:08:38

-1
(map function1 (take lst 5)) 

take需要的lst的第一要素,形成一個列表了出來。 mapfunction1應用於此列表的每個元素,並返回結果列表。

+2

問題標有[tag:common-lisp]。此答案中的用法不使用Common Lisp的** map **(至少需要三個參數),並且** take **未在Common Lisp中定義。 – 2015-04-01 20:08:06

2

它幾乎看起來像你不關心的結果。那麼你可以做

(mapC#'function lst)