summaryrefslogtreecommitdiffstats
path: root/elab.sml
diff options
context:
space:
mode:
Diffstat (limited to 'elab.sml')
-rw-r--r--elab.sml6
1 files changed, 5 insertions, 1 deletions
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)