Irrespective of the detailed syntax, I want to be sure I
understand the operational semantics of try ... finally.
The following SML fragment is supposed to treat the
three different situations, as an example.
fun complain exn = ...
fun final() = ...
fun foo x =
(f(x) before final())
handle Domain => (complain Domain; final())
| exn => (final(); raise exn)
Is this correct?