Hen*_*gon 4 function clojure map sequence
如何将函数序列中的每个函数映射到值序列中的相应值?:
(map '(sequence of functions) '(sequence of values))
Run Code Online (Sandbox Code Playgroud)
函数序列中的第n个函数应该应用于值序列中的第n个值.对不起,如果我不是很清楚.
例如,说 (def fns '(#(+ 1 %) #(- 1 %)) )
然后(map (some-clever-function-of fns) '(0 0))
会产生(1 -1)因为#(+ 1 %)
被映射到第1 0和#(- 1 %)
第2.
Bri*_*per 10
map
多个参数序列,它将完全符合您的要求. (map f seq1 seq2)
期望f
是一个带有两个参数的函数; map
将传递to 的第一个元素seq1
和第一个元素,然后是每个元素的第二个元素,等等.一旦任何seq参数用完,就停止,所以这也适用于无限序列.seq2
f
map
#(+ % 1)
和#(- % 1)
.这两个分别在clojure.core
,被称为inc
和dec
.所以:
user> (map (fn [f x] (f x))
[inc dec]
[0 0])
(1 -1)
Run Code Online (Sandbox Code Playgroud)
要么:
user> (map #(%1 %2) [inc dec] [0 0])
(1 -1)
Run Code Online (Sandbox Code Playgroud)