我正在尝试为 Clojure 编写更通用的映射函数,但无法将函数映射到嵌套向量上。特别是地图应该接受一个参数n,它允许嵌套的级别规范。
这是我到目前为止所写的,它因嵌套向量而失败:
(defn cloj-maps
([f x] (vec (map f x)))
([f x y] (vec (map f x y)))
([f x y z] (vec (map f x y z))))
这是我尝试输入/输出的示例:
输入 1:(inc [[1 2] [3 4]] 1) 其中 inc 是输入函数,[[...]] 是嵌套向量,1 是级别规范。
输出1:[[2 3] [4 5]]
象征性地 [f[ab] f[cd]] 映射在顶层。
输入 2: (inc [[1 2] [3 4]] 2)
输出 2:[[3 4] [5 6]]
象征性地 [f[f[a] f[b]] f[f[c] f[d]]] 我用 f 表示函数,并替换了 {1,2,3,4}->{a,b ,光盘}。这里的输入参数 2 意味着在级别 1 和 2 的映射,因此 f “包裹”在每个元素和每个向量周围。