(* some examples *) open Tcore let a = App(Abs("a",IntT,iadd(Int 1,Var "a")),Int 17) let b = eIf(ieql(Int 1, Int 2), Int 7, a) let c = Abs("v",RecordT[(fst_label,SumT[("p",IntT);("q",tBoolT)]); (snd_label,IntT)], Switch(Select(fst_label,Var "v"), [("p",Abs("x",IntT,Variant(fst_label,Var "x"))); ("q",Abs("y",tBoolT,Variant(snd_label,Var "y")))])) let d = Fix(["fact", Abs("x",IntT,eIf(ieql(Var "x",Int 0),Int 1,imul(Var "x",App(Var "fact", iadd(Var "x",Int (-1)))))), IntT], App(Var "fact",Int 6)) let d1 = Fix([("fact1", Abs("x",IntT,eIf(ieql(Var "x",Int 0),Int 1,imul(Var "x",App(Var "fact2", iadd(Var "x",Int (-1)))))), IntT); ("fact2", Abs("x",IntT,eIf(ieql(Var "x",Int 0),Int 1,imul(Var "x",App(Var "fact1", iadd(Var "x",Int (-1)))))), IntT)], App(Var "fact1",Int 6)) let e = Select("a", eIf(eFalse, Record[("a",Int 1);("b",eFalse)], Record[("a",Int 2);("b",Int 3)]))