2011-11-30 123 views
1

有沒有辦法刪除3元素元組的第一個元素,所以我得到了2元素元組而不必爲此另外創建一個函數?刪除3元素元組的第一個元素

(A,B,C) - >(B,C)

基本上我必須使用一個函數,該函數創建一個3元素的元組,然後我必須使用一個函數,它僅使用它的最後兩個元素。

謝謝你的回答。

回答

11

你的問題幾乎具有所需功能本身!

\(a,b,c)->(b,c) 

是您需要的功能。這是一個動態定義的「匿名」函數,您不必指定它的名字。因此,舉例來說,如果你有

someFunc :: someType -> (Int, Char, Bool) 

你可以做

(\(a,b,c)->(b,c)) (someFunc someValue) 

得到的someFunc someValue第二和第三部分。

+0

其實,這是我想到的第一件事情,但*是*創建一個函數。我認爲使用其他提供模式匹配的東西('let'或'where')更適合這樣的問題。 –

+0

@TikhonJelvis:的確如此。但由於該函數被定義爲「內聯」,並且沒有引入其他名稱,所以我認爲它不算太壞。 :-) – Prateek

+1

哈,那其實也是我的邏輯。但後來我想起了一些老師和平地學家可能會無意義地挑剔。 –

5

你可以用幾個句法結構如let做模式匹配。所以,你可以這樣做:

let (a, b, c) = triTuple in fn (b, c) 
1

您可以使用case

case x of (a, b, c) -> (b, c)