2011-11-30 25 views
1

3要素タプルの最初の要素を削除する方法があるので、この目的のために別の関数を作成しなくても2要素タプルを取得できますか?3要素タプルの最初の要素を削除する

(A、B、C) - >(B、C)

基本的に私は3要素タプルを作成する機能を、使用する必要があり、その後、私は関数を使用する必要がその最後の2つの要素を使用します。

ありがとうございました。

答えて

11

ご質問ほとんど必要な機能そのものを持っています!

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

が必要な機能です。これは、オンザフライで定義された "匿名"関数です。名前を付ける必要はありません。あなたは

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

を持っているのであれば、たとえばあなたはsomeFunc someValueの第二と第三成分を得るために

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

を行うことができます。

+0

は、これは実際に私が考える最初のものだったが、それは*です。私は、このような問題に対しては、パターンマッチング( 'let'または' where')が良いことを提供する何かを使うことを考えています。 –

+0

@TikhonJelvis:True。しかし、関数が "インライン"で定義され、別の名前を導入していないので、あまりにも悪くないと思いました。 :-) – Prateek

+1

ハ、それは実際にはまさに私の論理だった。しかし、その後、私はいくつかの教師やグレーダーが無意識のうちにいかがわしいかを思い出しました。 –

5

letのようないくつかの構文構造でパターンマッチングを行うことができます。だから、あなたのような何かができる:

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

あなたはcaseを使用することができます。関数を作成する*

case x of (a, b, c) -> (b, c) 
関連する問題