Exercise 16 [難易度 2]
今までのことを応用して,
空リスト [],右結合の二項演算子
::,match 式を導入して,リストが扱えるように ML4
インタプリタを拡張せよ.match式の構文は,
match <式1> with []→<式2>
| <識別子1> :: <識別子2>→<式1>
程度の制限されたものでよい.
Exercise 17 [難易度 1]
リスト表記
[<式1>;…;<式n>]
をサポートせよ.
Exercise 18 [難易度 1]
match式において,リストの先頭と残りを表す変数に同じものが使われていた
場合にエラーを発生するように改良せよ.
Exercise 19 [難易度 3]
より一般的なパターンマッチ構文を実装せよ.
Exercise 20 [難易度 2]
ここまで与えた構文規則では,Objective Camlとは異なり, if,let,
fun, match 式などの「できるだけ右に延ばして読む」構文が二項
演算子の右側に来た場合,括弧が必要になってしまう.この括弧が必要なくな
るような構文規則を与えよ.例えば,
1 + if true then 2 else 3;;
などが正しいプログラムとして認められるようにせよ.