Clojure 如何将双参数函数映射到列表?

Clojure 如何将双参数函数映射到列表?,clojure,Clojure,我有一个元素列表,其中包含一些值 我想将它映射到一个函数,并生成一个列表,其中包含通过将这个双参数函数应用于第一个列表中的连续值而计算出的值 此列表将少一个元素 映射函数应该一次接受两个参数 编辑 示例 我使用的两参数函数非常复杂,为了简单起见,我们假设它是一个计算两个数的平均值的函数 如果我有一个列表:[3 8 11 14 19 20 88] 我可以写一个函数来映射我的平均值函数吗?对于(平均值38),它将给出5.5 对于(平均8.11)将给出9.5 而(平均11 14)将给出12.5 等等

我有一个元素列表,其中包含一些值

我想将它映射到一个函数,并生成一个列表,其中包含通过将这个双参数函数应用于第一个列表中的连续值而计算出的值

此列表将少一个元素

映射函数应该一次接受两个参数

编辑

示例

我使用的两参数函数非常复杂,为了简单起见,我们假设它是一个计算两个数的平均值的函数

如果我有一个列表:
[3 8 11 14 19 20 88]

我可以写一个函数来映射我的
平均值
函数吗?对于
(平均值38)
,它将给出
5.5

对于
(平均8.11)
将给出
9.5

(平均11 14)
将给出
12.5

等等

将平均值应用于列表中的两个连续值时,我应该会得到

[5.5 9.5 12.5 16.5 19.5 54.0]
结果呢

map对整个列表应用一个单参数函数,并生成一个元素数完全相同的新列表

我想要的是一种方法来应用我的函数,它一次取两个连续的参数,将我的函数应用到它,并将结果添加到一个新列表中

(fn [f coll] (map #(apply f %1) (partition 2 1 coll)) 

现在直接去4clojure

您可以使用地图:

(map f coll (rest coll))

你能添加一些简单的例子吗?你是说reduce()?太好了!顺便说一句,可以将
#(应用f%1)
更改为
(部分应用f)
或仅
#(减少f%)
这是有效的!为什么map需要两个以上的参数?在这种情况下,映射是如何工作的?所以它从每个传递的列表中选择一个参数?直到其中一个列表结束?
所以它从传递的每个列表中选择一个参数?直到其中一个列表结束?
-是的,完全正确。传递给
map
@AmoghTalpallikar的fn必须采用与传递给
map
的seq数量相同的参数。您可以在中阅读有关
map
和其他函数的更多信息。