我一直在使用Clojure玩弄,並決定將結合會員名:mapcat和列表來模擬這種行爲高階函數:傳遞的變量列表中逐個到Clojure的功能
Clojure> (mapcat list '(1 2 3 4) '(5 6 7 8))
(1 5 2 6 3 7 4 8)
我第一次嘗試定義mapcatList如下:
Clojure> (defn mapcatList[& more](mapcat list more))
#'sandbox99/mapcatList
Clojure> (mapcatList '(1 2 3 4) '(5 6 7 8))
((1 2 3 4) (5 6 7 8))
顯然函數不表現我怎麼會喜歡它,我覺得這是因爲兩個列表都被放進一個列表,並通過作爲一個參數,而不是兩個。 我可以用下面的亡羊補牢,
Clojure> (defn mapcatList[x y & more](mapcat list x y))
#'sandbox99/mapcatList
Clojure> (mapcatList '(1 2 3 4) '(5 6 7 8))
(1 5 2 6 3 7 4 8)
該解決方案具有兩個列表效果很好,但我想在功能與參數的數量可變的工作。
我的問題:如何將一個可變數量的參數傳遞給一個函數,然後將它們解構爲使它們作爲單獨的參數一起傳遞給'mapcat list'?
(defn mapcatList [&more](apply mapcat list more)) – vedang 2011-12-15 16:50:45