【发布时间】:2012-05-07 12:48:45
【问题描述】:
我想获取一个使用(map #(nth %1 0 nil) v1) 生成的序列[44 1 11],并将其输入(映射)到对同一函数的连续调用中。我只是不确定要使用哪个 Clojure 内置函数或其他内置函数。
这里是详细信息。
给定这两个向量:
(def v1 [[44 2 3 4 5]
[1 6 7 5 10]
[11 12 13 14 15]])
(def v2 [[1 2 3 4 44]
[1 6 7 5 1]
[11 12 13 14 44]])
还有这个功能
(defn ret-non-match-rows
"Expects a sequence of sequences, like what is returned from clojure-csv.
Returns all csv rows that do not match cmp-val at cmp-col-idx."
[s-o-s cmp-val cmp-col-idx]
(filter (complement nil?)
(map #(if (ret-col-match %1 cmp-val cmp-col-idx) nil %1) s-o-s) ))
所以我请求帮助如何将(地图)[44 1 11] 输入到这样的 ret-non-match-rows 中
(ret-non-match-rows v2 44 4)
(ret-non-match-rows v2 44 1)
(ret-non-match-rows v2 44 11)
但使用 Clojure 内置函数来生成这些单独的调用。
谢谢。
编辑:
以下内容为我提供了我想要的,但我想知道是否有更清洁的方法。
(def ssn-1 [44 1 11])
(def tst (partial ret-non-match-rows v2 4))
(map #(tst %1) ssn-1)
我得到一个序列序列并将解析它以获得我的结果。
【问题讨论】:
-
我无法理解这个问题。您是否在寻求帮助编写 ret-non-match-rows、ret-col-match 或其他内容?
-
v2是干什么用的?您似乎没有在任何地方使用它。 -
我已经编辑了原始帖子,希望它更清晰一些。
-
@octopusgrabbus 抱歉,现在更不清楚了。 v1 和 v2 中的元素如何映射到调用序列中的参数?
-
如果第一次调用中的 4 是拼写错误(而您的意思是 44),这是有道理的,我根据这个假设做了一个答案。
标签: clojure