タプル

タプルというのは、(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