3.0 ---- 1 ---- TA_Result(M.TyInt) ==== 1.0 ---- (1 + 1) ---- TA_Result(M.TyInt) ==== 1.0 ---- (1 = 2) ---- TA_Result(M.TyBool) ==== 1.0 ---- (1 + true) ---- TA_Exception ==== 1.0 ---- (false and false) ---- TA_Result(M.TyBool) ==== 1.0 ---- ((1 = 1) and (true or false)) ---- TA_Result(M.TyBool) ==== 1.0 ---- if false then read else 1 ---- TA_Result(M.TyInt) ==== 1.0 ---- if 1 then 1 else 1 ---- TA_Exception ==== 1.0 ---- if true then 1 else true ---- TA_Exception ==== 1.0 ---- write(1) ---- TA_Result(M.TyInt) ==== 1.0 ---- write(true) ---- TA_Result(M.TyBool) ==== 1.0 ---- write("asdasd") ---- TA_Result(M.TyString) ==== 1.0 ---- write(1); write("a"); write(true) ---- TA_Result(M.TyBool) ==== 1.0 ---- (1, true) ---- TA_Result(M.TyPair(M.TyInt,M.TyBool)) ==== 1.0 ---- (1, 2).1 ---- TA_Result(M.TyInt) ==== 1.0 ---- (fn x => 1) 1 ---- TA_Result(M.TyInt) ==== 1.0 ---- (fn x => 1) true ---- TA_Result(M.TyInt) ==== 1.0 ---- malloc 1 ---- TA_Result(M.TyLoc(M.TyInt)) ==== 1.0 ---- 1 := 1 ---- TA_Exception ==== 1.0 ---- malloc 1 := 2 ---- TA_Result(M.TyInt) ==== 1.0 ---- malloc 1 := true ---- TA_Exception ==== 1.0 ---- !malloc 1 ---- TA_Result(M.TyInt) ==== 1.0 ---- !1 ---- TA_Exception ==== 2.0 ---- let val v = 1 in v end ---- TA_Result(M.TyInt) ==== 2.0 ---- let val f = fn x => (x + 1) in f 2 end ---- TA_Result(M.TyInt) ==== 2.0 ---- let rec f = fn x => if (1 = x) then 1 else if (0 = x) then 1 else (f (x - 1) + f (x - 2)) in f 10 end ---- TA_Result(M.TyInt) ==== 2.0 ---- let val l = malloc (fn x => (1 + x)) in (!l) 2 end ---- TA_Result(M.TyInt) ==== 2.0 ---- (fn f => fn y => (fn x => x) (f y)) (fn x => x + 1) 2 ---- TA_Result(M.TyInt) ==== 2.0 ---- let val f = fn x => x in f 1; f true end ---- TA_Exception ==== 3.0 ---- let val x1 = malloc malloc malloc 1 in let val x2 = !x1 in let val x3 = !x2 in (fn x => x := 3) x3 end end end ---- TA_Result(M.TyInt) ====