From 9f5889c1263d63b953b3a324da07321deef5ca58 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Sat, 27 Apr 2024 08:28:40 -0700 Subject: Add integer arithmetic. --- elab.sml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'elab.sml') diff --git a/elab.sml b/elab.sml index 52d0089..cc73c98 100644 --- a/elab.sml +++ b/elab.sml @@ -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) -- cgit v1.3.1