Clojure 展开映射函数以处理嵌套线段

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][

我只是尝试重命名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][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]]