top page > computer > haskell > web_lecture > for_programmer > tuple_def.html
更新日:
文責: 重城良国

タプルの定義

はじめに

今までタプルは「与えられた型」として扱ってきた。構文糖など表記のレベルではそれは事実だ。自分で定義することはできない。しかし、中身に関して言えば同等のものが代数的データ型の枠組みで実装できる。

タプル

タプルは以下のように定義されていると考えられる。

data (,) a b = (,) a b deriving Show

ただし使われている記号の問題でこれはHaskellとしては正しくない。

Tuple型

定義

(,)の代わりに型構築子名、値構築子名として正当なTupleを使えば普通に定義できる。

data Tuple a b = Tuple a b deriving Show

関数

関数fst, sndと同等な関数fstT, sndTを定義する。

fstT :: Tuple a b -> a
fstT (Tuple x _) = x

sndT :: Tuple a b -> b
sndT (Tuple _ y) = y

タプルの構文糖

型構築子、値構築子の名前(,)が特殊であること以外は(,)とTupleとは同じだ。またデフォルトのタプルに対しては構文糖が用意してある。型宣言や値の記述の両方で以下のような脱糖が行われる。

(a, b) ==> (,) a b

まとめ

代数的データ型は一般的なタプルを独自に定義するのに十分なくらい強力である。

「多相型」へもどる 「Maybe型」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics