我正在尝试创建一个遍历每个元素并应用操作的映射函数。它就像一个map
函数,但更深入。
该函数需要两个参数;一个函数,一个用于参数。
这是我到目前为止所拥有的:
(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]
这个想法适用于任何对单个元素而不是顺序操作的函数。