69.
JSONスキーマの型構築子
*
|:ユニオン型
o
string | null で「stringあるいはnull」
*
&:インターセクション型
o
A & B で「A, B両方の要素を持つ」
o
object にしか使えません
*
?:オプショナル型
o
object {"name":string, "email":string?}
o
"email"プロパティがないかも
*
@tag:タグ
o
@person {"name":string, "age":integer}
71.
スキーマによる型付け
*
あらゆるコマンドは入出力の型を持つ
*
コマンド同士の結合時には型チェックがされる
o
今はちょっと適当
o
そのうちきちんと実装します
*
型チェックの基準
o
A | B の結合が成立する条件
o
Aの出力型がBの入力型に包含されている
*
型変数を導入したので多相コマンドが書ける
*
型変数は型推論されて型チェックされる