Clojure 展开映射函数以处理嵌套线段
我只是尝试重命名Clojure中的map函数,以更好地暴露任意输入。我编写的函数在传递的参数数量方面存在问题。即Clojure 展开映射函数以处理嵌套线段,clojure,clojure-contrib,Clojure,Clojure Contrib,我只是尝试重命名Clojure中的map函数,以更好地暴露任意输入。我编写的函数在传递的参数数量方面存在问题。即 (defn new-map [f [& x]] (map f x)) 此外,最终目标是编写能够处理嵌套输入的映射函数: 输入1:[inc[[1 2 3][4 5]][2 1]] 输出1:[[1 2 3][5]],其中inc是一个特定的函数f,[[1 2 3][4 5]]是一个数组,[2 1]选择数组的第二行第一个元素 输入2:[inc[[1 2 3][4 5][
(defn new-map [f [& x]]
(map f x))
此外,最终目标是编写能够处理嵌套输入的映射函数:
输入1:[inc[[1 2 3][4 5]][2 1]]
输出1:[[1 2 3][5]],其中inc是一个特定的函数f,[[1 2 3][4 5]]是一个数组,[2 1]选择数组的第二行第一个元素
输入2:[inc[[1 2 3][4 5][6][7]][[1 1][2 2][3]]
输出2:[[2 2 3][4 6][7][7]]听起来您希望
在更新中减少
i、 e
(defn new-map [f nested-vecs indices]
(reduce (fn [nv idxs] (update-in nv idxs f))
nested-vecs
indices))
;; I changed your inputs. Remember that indices start from 0
(new-map inc [[1 2 3] [4 5] [6] [7]] [[0 0] [1 1] [2 0]])
; => [[2 2 3] [4 6] [7] [7]]