3.7
��
ML
5
— リスト
Exercise�16
��
[難易度 2]
今までのことを応用して, 空リスト
[]
,右結合の二項演算子
::
,
match
式を導入して,リストが扱えるように
ML
4
インタプリタを拡張せよ.
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;;
などが正しいプログラムとして認められるようにせよ.