例外処理
Rubyのensureに相当することは,OCamlではどうすればいいんだろう.
else節がある場合.(追記:間違ってたので修正)
# Ruby begin a rescue Error b else c ensure d end
(* OCaml *) try begin (try a c with Error -> b); d end with x -> d; raise x
else節がない場合.
# Ruby begin a rescue Error b ensure d end
(* OCaml *) try a d with Error -> b | x -> d; raise x);
こんな感じ?あんまり綺麗に書けてる気がしない.そもそもこれで合ってるのか?
Rubyだと一つのbeginで書けるのに,tryのネストとか出てきたりして嫌だなぁ.