2015-05-12 64 views
1

我有一个没有副作用并且采用相同参数的函数列表。我需要评估列表中的每个函数,并将结果放入另一个列表中。 Clojure有没有这样的功能?评估Clojure中的函数列表

+0

如果您的意思是要将每个函数应用于相同的参数,则只需要一个适当的函数来在列表中“映射”。 – molbdnilo

回答

3
(map #(% arg) function-list) 

应该做这份工作吗?

6

juxt应该这样做:

((juxt inc dec) 1) 
=> [2 0] 

(如果你从字面上有功能的列表,你想要的结果的列表,请(apply list ((apply juxt (list inc dec)) 1)),如注释说明。)

+1

如果你有一个序列中的函数,你必须像往常一样将列表应用于'juxt'函数:'((apply juxt [inc dec])1)' – TheQuickBrownFox

+1

小心,'(into'() ...)'会扭转顺序!如果您需要急切的评估,最好只是省略'into'或用'doall'替换它。 –

+0

这是一个很好的观点,谢谢。虽然这两种方法都不返回列表,但是“应用列表”将修复它。更新我的答案。 – bsvingen

0
(map apply [+ - * /] (repeat [1 2 3 4])) 
=> (10 -8 24 1/24)