我试图创建一个映射函数,通过每个元素并应用操作。它就像一个map
函数,但深入。Clojure - 通过所有级别的地图
该函数需要两个参数;一个函数和一个参数。
这是我到目前为止有:
(defn go-through
[op & args]
(if-not (sequential? (first args))
(apply op args)
(apply (partial map go-through op) args)))
而且我知道,最后一行是行不通的,即使没有调用它。但我不知道其他方式。
建议?
也许我限制了这种功能的用途。
样品:
user=> (go-through + 1 2)
3
user=> (go-through + [1 2] [3 4])
IllegalArgumentException Don't know how to create ISeq from: clojure.core$_PLUS_ clojure.lang.RT.seqFrom (RT.java:494)
我期待[4 6]
的想法是这个应用与单元素,而不是sequentials操作的任何功能。
你能不能包括一个样本输入和输出?它应该保留树结构还是生成一个seq? –
@ArthurUlfeldt,它应该保留树结构。 – Zchpyvr
你想要[4 6]还是[3 7]? – DanLebrero