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