なぜこれが機能するのですか
print (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True)
これはしませんが
print (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True)
なぜこれが機能するのですか
print (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True)
これはしませんが
print (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True)
Show
15タプルのインスタンスがあるため:
Prelude> :i (,,,,,,,,,,,,,,)
data (,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o
= (,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o
-- Defined in `GHC.Tuple'
<<skip>>
instance (Read a, Read b, Read c, Read d, Read e, Read f, Read g,
Read h, Read i, Read j, Read k, Read l, Read m, Read n, Read o) =>
Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
-- Defined in `GHC.Read'
instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g,
Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o) =>
Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
-- Defined in `GHC.Show'
そして、16タプルにはありません:
Prelude> :i (,,,,,,,,,,,,,,,)
data (,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p
= (,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p
-- Defined in `GHC.Tuple'
ドキュメントを参照してください
AFAIKインスタンスは、ghc内部ライブラリのどこかで手書きされており、16タプルを表示する必要はほとんどありません。
これは、Haskellレポートのセクション6.1.4タプルで定義されています。
タプルのサイズに上限はありませんが、Haskellの実装によっては、タプルのサイズを制限したり、より大きなタプルに関連付けられたインスタンスを制限したりする場合があります。ただし、すべてのHaskell実装は、Eq、Ord、Bounded、Read、およびShowのインスタンスとともに、サイズ15までのタプルをサポートする必要があります。Preludeとライブラリは、最大サイズ7のタプルのzipなどのタプル関数を定義します。