的uncurry
功能僅適用於函數帶有兩個參數:確實哈斯克爾具有可變參數的功能/元組?
uncurry :: (a -> b -> c) -> (a, b) -> c
如果我想用的參數任意數量uncurry功能,我可以只寫獨立的功能:
uncurry2 f (a, b) = f a b
uncurry3 f (a, b, c) = f a b c
uncurry4 f (a, b, c, d) = f a b c d
uncurry5 f (a, b, c, d, e) = f a b c d e
不過這樣會很快乏味。有什麼辦法可以概括這個,所以我只需要編寫一個函數?
不是這樣,但無論如何,你爲什麼要這樣做?根據我的經驗,在極少數情況下,你需要的不僅僅是uncurry –
@Paul:沒有具體的原因,但只要我看到任何一種重複的模式,我都會問自己,我怎麼能夠從中進行概括和抽象。 – fredoverflow