Haskell是否有內建或慣用的方式來「解開」列表中的元素並將它們作爲函數的單獨參數?如何將Haskell中的列表解壓爲單個參數?
舉例來說,如果我有f :: a -> b -> c -> d -> e
是有什麼緊湊像
f (unlist x)
完成
let x = [1,2,3,4] in f (x!!0) (x!!1) (x!!2) (x!!3)
,或者至少不那麼「shouty」(太多!!
重複)的方式來解壓縮列表通常已知長度(在這種情況下,它可以用作函數的參數)。
基本上就是我在尋找的東西像什麼呢[email protected]@
在數學:
f[[email protected]@{1, 2, 3, 4}]
我不認爲在Haskell的類型系統,鍵入檢查。也許像'unlist1','unlist2','unlist3'等變體一樣。在這種情況下,'unlist3 f [a,b,c] = fabc'並且像'unlist3 fx'一樣使用或者使用中綴來看起來像一個函數「呼叫」。 – Mephy
有[trick](http://okmij.org/ftp/Haskell/polyvariadic.html#polyvar-fn)說服類型系統讓你寫polyvariadic函數。這是相對不平凡和重量級的,所以你不會經常看到它。最着名的用例是['Text.Printf'](http://hackage.haskell.org/package/base-4.8.1.0/docs/Text-Printf.html)。 – duplode