begin ... end

OCamlではUnitを返す式に限り,次のように書くことができる.

expr1;
expr2;
expr3

がしかし,この構文にはものすごい欠陥があると思う.

expr1;
expr2;
expr3;

と最後の式のあとにセミコロンを書いてしまったとき,うまくパースしてくれないのだ.

こういうときには,beginとendでくくればよい.

begin
  expr1;
  expr2;
  expr3;
end

はOKである.begin〜endの中の最後の式は,値を持っていてもよい.最後の式の値がbegin〜endの値となる.


ちなみに,リストは

[1;2;3;]

と書いても大丈夫である.


も一つついでに,ignoreという関数を使えば,式の値を無視してunitを返すようにできる.

begin
  ignore 1;
  ignore 2;
  ignore 3;
end