2015-04-01 78 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)