359 |
let val v = newVALvar(exnID, mkv) |
let val v = newVALvar(exnID, mkv) |
360 |
val r = RULE(VARpat v, RAISEexp(VARexp(ref(v),[]),UNDEFty)) |
val r = RULE(VARpat v, RAISEexp(VARexp(ref(v),[]),UNDEFty)) |
361 |
val rules = completeMatch' r rules |
val rules = completeMatch' r rules |
362 |
in HANDLEexp(exp, HANDLER(FNexp(rules,UNDEFty))) |
in HANDLEexp(exp, (rules,UNDEFty)) |
363 |
end |
end |
364 |
|
|
365 |
|
|
479 |
| SEQexp l => app findexp l |
| SEQexp l => app findexp l |
480 |
| APPexp (a,b) => (findexp a; findexp b) |
| APPexp (a,b) => (findexp a; findexp b) |
481 |
| CONSTRAINTexp (x,_) => findexp x |
| CONSTRAINTexp (x,_) => findexp x |
482 |
| HANDLEexp (x, HANDLER h) => (findexp x; findexp h) |
| HANDLEexp (x, (l, _)) => |
483 |
|
(findexp x; app (fn RULE (_, x) => findexp x) l) |
484 |
| RAISEexp (x, _) => findexp x |
| RAISEexp (x, _) => findexp x |
485 |
| LETexp (d, x) => (finddec d; findexp x) |
| LETexp (d, x) => (finddec d; findexp x) |
486 |
| CASEexp (x, l, _) => |
| CASEexp (x, l, _) => |