2017-05-28 5 views
1

<<=>および>=の定義がタプル用であることを見つけようとしています。タプルのOrdの定義

(-1, 3) <= (1, 2) -- True 
(2, 3) <= (1, 2) -- False 

...を見てみると... <=ちょうど各タプルの最初の要素に<=を使用して定義することができたように見えます。しかし、

(1, 3) <= (1, 2) -- False 

...第一の要素が等しい場合、この例では...それはTrueされているだろうとして、それだけで、各タプルの最初の要素に<=ならないことを意味します。

何が起こっているのですか? <=とco on tuplesの定義は何ですか?

答えて

3

注文はlexicographicです。左から右の要素を比較し、その順序は等しくない最初の要素によって定義されます。

Prelude> (1, 2) < (1, 3) 
True 
Prelude> (1, 2) < (1, 1) 
False 
Prelude> (2, 2) < (1, 1) 
False 
+1

ありがとう!あなたはこれを言っているどこかのオンラインレファレンスを持っていますか? (だから私はここで質問することなく、将来同様の質問に対する答えを見つけるより良い機会を得ます...) –

+1

@MichalCharemza [LYAH](http://learnyouahaskell.com/starting-out)をチェックすることができます。これはリストのためのもので、タプルのリストの違いについて議論します。これは私の最高の基準です(確かに、最高ではない)。 –

+4

@MichalCharemza言語弁護士レベルの参照が必要な場合は、Haskellレポートをチェックしてください。タプルは、 'data(a、b)=(a、b)が(...、Ord)を導出する 'と'導出 'メカニズム(https://www.haskell)で定義されているかのように動作することが要求されます。 org/onlinereport/haskell2010/haskellch11.html#x18-18300011.1)は、辞書順を要求しています。 – chi

関連する問題