たとえば,
- catchAll (fn (x,y) => x div y) (1,0) 999;divide by zeroval it = 999 : int のように動作する.
解答例
以下にSML#での定義と実行の例を示す。
# fun catchAll f x z =
f x handle en => (print (exnMessage en ^ "\n"); z);
val catchAll = fn : [’a, ’b. (’a -> ’b) -> ’a -> ’b -> ’b]
# catchAll (op div) (1,0) 999;
Div at (interactive):9.12
val it = 999 : int