【发布时间】:2014-12-09 10:35:03
【问题描述】:
我正在尝试在 clojure 中编写一个返回笛卡尔积的函数
(my-compute-fn [1 2 3] [4 5 6])
会回来
[[1 4] [1 5] [1 6] [2 4] [2 5] ....]
我的尝试导致了这个
(defn compute [col1 col2]
(let [totcol2 (count col2)
totcol1 (count col2)]
(map #(vector %1 %2)
(mapcat #(repeat totcol1 %1) col1)
(take (* totcol1 totcol2) (cycle col2)))))
它可以完成这项工作,但看起来有点笨重。 什么是更好、更简洁的实现,涉及 clojure.core 中更容易获得的功能?
谢谢!
编辑: 找到了 clojure 组合学,似乎没有神奇的函数方式可以做到这一点。
【问题讨论】:
-
组合数学的
cartesian-product怎么样? :P