![見出し画像](https://assets.st-note.com/production/uploads/images/111639852/rectangle_large_type_2_b604f65a0778bbedfbf20eedc3bac2d5.png?width=800)
初心者にやさしい言語OCamlでプログラミングを学んでいます(タプルとレコード)
やさしくても「表現力と安全にこだわった仕事で使える関数型言語」OCamlによるプログラミング学習の第7回です。テキストは、公式ページのあの日のOCamlです。
内容は、タプルとレコードについてのまとめです。
OCamlのデータ型
既に見てきたように、OCamlには、整数型などの基本データ型、リストなどの複合型がある。その他のデータ型として、タプルとレコードの二つを以下に説明する。
タプル
タプルは、要素数が固定された集まりであって、各要素が任意の型をとりうる集まりである。
# let triple = (0, 1.0, '2');;
val triple : int * float * char = (0, 1., '2')
タプルの値は,で区切られるが、タプルの型は*で区切られる。
レコード
レコードは、タプルとよく似ているが、タプルが要素の記述を固定された順番で行う代わりに、レコードは名前付きの要素を有する。
(一体、何と何を対比させようとしているのか分かりませんでした。)
定義
# type employee = { id: int; name: string; is_alive: bool};;
type employee = { id : int; name : string; is_alive : bool; }
値
# let frank = {id = 4250; name = "frank"; is_alive = true};;
val frank : employee = {id = 4250; name = "frank"; is_alive = true}
要素の読み出し
# let id = frank.id;;
val id : int = 4250
これらタプルおよびレコードの両方に対して、パターンマッチングが機能する。
# match triple with (x, _, _) -> x;;
- : int = 0
# match frank with {id = i; name = n; is_alive = l} -> i;;
- : int = 4250
まとめ
今回は、タプルとレコードについて学びました。
しかし、説明が短いので「今日は名前だけでも憶えて帰って下さいね」といった状態です。
もしかしたら、OCamlではリストが主役で、タプルやレコードの出番はあまりないのかもしれません。
次回は、独自定義データ型の予定です。
古往今来得ざれば即ち書き得れば即ち飽くは筆の常也。と云うわけで御座います、この浅ましき乞食めに何卒皆々様のご慈悲をお願い致します。