構造体/レコード型

同義語 構造体=レコード。

これは便利だ。構造体型は帰納的型だから、データは帰納的データ。帰納的データ(=帰納的型のデータ)は定義によりリテラル表示を持つ。リテラル表示のコンビニエンスとしていくつかの記法がサポートされている。

  1. 名前付きレコード記法: {名前 . フィールド並び} フィールド並びは割り当てのカンマ区切り並び
  2. レコードアップデート記法: {アップデート部分 .. 元レコード} アップデート部分は割り当てのカンマ区切り並び
  3. デフォルト値: 定義時にフィールドデフォルト値があれば、書かなくてもよい。
  4. 汎用〈無名〉{レコード | タプル}記法: 順番でフィールドを識別する。〈 ... 〉便利! 並べるのは値だけ。

関数の引数にレコード型を使えば、名前引数渡し、デフォルト引数、典型引数、汎用タプル記法が使える。

  1. foo {a := 1, b:= 2}
  2. foo {a := 1} -- bはデフォルト値
  3. foo {b := 3 ..foo_arg } -- foo_arg は典型引数
  4. foo 〈1, 2〉