大域脱出する関数の型

例外やexitなどの関数の型をどう扱えば良いか困った。OCamlだと

val exit : int -> 'a

Haskellだと

exitWith :: ExitCode -> IO a

みたいに多相型を返して任意の型と単一化できるようにするのが普通のようだけど、rowlはreturnで値を返すのでこれができない。どうしようかな〜。

[追記] scalaの実装が参考になりそう。
[追記2] void型を大域脱出する式の型として使用することにした。scalaのNothingと同じ役割。