タプルというのは、(a,a)のような型の組なんだ。
この組は1つの値として扱われるよ。
まあ、それだけなんだけど、結構柔軟だから、:tで試してみよう。
Prelude> :t (-1,0)
(-1,0) :: (Num a, Num b) => (a, b)
これは、a,bはそれぞれNumクラスに制約されたインスタンスであることを示しているね。
それぞれに制約が書いてあるから、別々でも良いんだろうね。
Prelude> :t ("mohikan", False)
("mohikan", False) :: ([Char], Bool)
[Char]とBoolの組になったね。今度は個数を変えてみよう。
Prelude> :t (True)
(True) :: Bool
Prelude> :t (True,True,True)
(True,True,True) :: (Bool, Bool, Bool)
Prelude> :t (False,2,9.0,10,"Aha",True)
(False,2,9.0,10,"Aha",True) :: (Num b, Fractional c, Num d) =>
(Bool, b, c, d, [Char], Bool)
1つだとただの型になっちゃうね。これはタプルじゃないよ。タプルに対してアトム(原子)と言えばいいかな。
3つは問題なし。6つでも大丈夫だね。タプルは2個以上ならいくつでもいいんだ。
でも、参照するときに項目数が指定されるから、特別なことがなければ個数を変えることは出来ないね。
タプルについてはひとまずこれでいいかな。
そうそう、似たようなものに
リストがあるから、次はこれを見てみよう。。
最終更新:2007年09月27日 08:07