0
這是對我之前的問題here的擴展。通過一系列函數和一個seq中的其他參數對數據結構進行線程處理
目的被示爲如下:
(defn foo
[x a-map]
(assoc a-map x "value"))
(defn -main
[x]
(let [[x1 x2 x3 ... xn] x]
(-> {}
(partial foo x1)
(partial foo x2)
(partial foo x3)
...
(partial foo xn))))
的這個問題的複雜性在於,我必須填充可變數量的部分功能,所以我不能使用->
也不「排版」。 foo
函數的真正機制當然不是assoc
,所以我不能簡化爲zipmap
的問題。
我不確定這個問題,但輸入參數x
實際上是兩個序列的笛卡爾乘積。因此,x
的每個元素都是一個兩元素向量,它遍歷兩個序列的笛卡爾乘積空間。它使用for
循環生成,或者更確切地說是列表理解。
你有什麼建議來處理這個問題?如果我沒有提供一些重要信息,請告訴我。
乾杯
美麗!關於我的雙重循環嵌套方式,在真正的數據操作習慣之前是否構建了一個笛卡爾seq?或者有什麼其他的選擇來做到這一點? – Davyzhu 2015-03-25 08:24:42
在將它提供給'reduce'之前,用'for'循環構建一個笛卡爾積是一個很好的解決方案,因爲'for'產生一個懶惰的序列。但請確保不要持有產生懶惰序列的頭。 – 2015-03-25 08:30:49
但你爲什麼提到嵌套'for'循環?在Clojure中,只需一個'for'循環即可生成笛卡爾產品。 – 2015-03-25 08:31:44