gpt4 book ai didi

function - 将函数序列映射到序列

转载 作者:行者123 更新时间:2023-12-02 19:26:31 27 4
gpt4 key购买 nike

如何将函数序列中的每个函数映射到值序列中对应的值?:

(map '(sequence of functions) '(sequence of values))

函数序列中的第 n 个函数应应用于值序列中的第 n 个值。抱歉,如果我不太清楚。

例如,说(def fns '(#(+ 1 %) #(- 1 %)) )

然后 (map (some-clever-function-of fns) '(0 0)) 会产生 (1 -1) 因为 #(+ 1 %)映射到第一个 0,#(- 1 %) 映射到第二个。

最佳答案

  • 传递map多个参数序列,它就会完全按照您的要求进行操作。 (map f seq1 seq2) 期望 f 是一个带有两个参数的函数; map 会将 seq1 的第一个元素和 seq2 的第一个元素传递给 f,然后将每个等。一旦任何 seq 参数用完,map 就会停止,因此这也适用于无限序列。
  • 考虑使用向量而不是带引号的列表。向量以“数据”而不是“代码”的形式出现,并且您不必引用它们。
  • 您的示例函数没有执行您想要的操作;两者都返回 1。我怀疑您的意思是 #(+ % 1)#(- % 1)。这两个都位于 clojure.core 中,分别称为 incdec

所以:

user> (map (fn [f x] (f x)) 
[inc dec]
[0 0])
(1 -1)

或者:

user> (map #(%1 %2) [inc dec] [0 0])
(1 -1)

关于function - 将函数序列映射到序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5177862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com