diff options
Diffstat (limited to 'elab.sml')
| -rw-r--r-- | elab.sml | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -5,6 +5,10 @@ struct fun primop (s : string) : Syntax.primop = case s of "exit" => Syntax.PExit + | "add" => Syntax.PAdd + | "sub" => Syntax.PSub + | "mul" => Syntax.PMul + | "div" => Syntax.PDiv | _ => raise Fail ("invalid op: " ^ s) fun elab (env : int StringMap.map) (p : Syntax.expr) : Syntax.lexp = @@ -41,7 +45,7 @@ struct end | Syntax.ECase (expr, []) => raise Fail "nonexhaustive match" | Syntax.ECase (expr, (pat, body) :: rest) => - if rest <> [] then raise Fail "redundant match" else + if not (null rest) then raise Fail "redundant match" else let val v = Gensym.new () in case pat of Syntax.PWild => Syntax.LApp (Syntax.LFn (v, elab env body), elab env expr) |
