【发布时间】:2012-12-13 09:33:55
【问题描述】:
我正在尝试创建一个遍历每个元素并应用操作的映射函数。它很像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]
这个想法适用于任何对单个元素而不是顺序操作的函数。
【问题讨论】:
-
您能否包含一个示例输入和输出?它应该保留树结构还是生成序列?
-
@ArthurUlfeldt,它应该保留树结构。
-
你想要[4 6]还是[3 7]?
-
我想要
[4 6]。它将函数映射到两个向量。我不是在寻找reduce。
标签: clojure