本実験のミニOCaml言語の構文を以下の通り定める。
e ::= x 変数 | let x = e in e let式 | let rec f x = e in e let-rec式 | fun x -> e 関数 | e e 関数適用 | true 真理値リテラル(定数) | false 真理値リテラル(定数) | if e then e else e if式 | n 自然数リテラル (n は自然数 0, 1, 2, ...) | - e 整数演算(符号の反転) | e + e 整数演算(足し算) | e * e 整数演算(かけ算) | e / e 整数演算(割り算) | e = e 等しさ(整数と真理値) | e > e 大小比較(整数) | e < e 大小比較(整数)ただし、「かっこ」を適宜補う必要がある。 たとえば、fが関数のとき、 f -5 でなく、f (-5) と書く必要がある。 この他に、課題・発展課題を解くために、必要に応じて適当な構文を追加することがある。 たとえば、整数上の演算 e - e や、リストを表記する以下の構文などは、後で追加するかもしれない。
| [] 空リスト | e :: e リストの先頭に要素を追加したリスト | List.hd e リストの先頭要素 | List.tl e リストの先頭要素を除去したリスト
亀山 幸義