(* This code extends 'mini_prelude'. *) Dletrec [("mrg","v7", Fun "v8" (Fun "v9" (Mat (Var "v8") [(Pcon "Nil" [], Mat (Var "v9") [(Pcon "Nil" [],Con "Nil" []); (Pcon "Cons" [Pvar "v2"; Pvar "v1"], Con "Cons" [Var "v2"; Var "v1"])]); (Pcon "Cons" [Pvar "v6"; Pvar "v5"], Mat (Var "v9") [(Pcon "Nil" [],Con "Cons" [Var "v6"; Var "v5"]); (Pcon "Cons" [Pvar "v4"; Pvar "v3"], If (App Opapp (App Opapp (Var "v7") (Var "v6")) (Var "v4")) (Con "Cons" [Var "v6"; App Opapp (App Opapp (App Opapp (Var "mrg") (Var "v7")) (Var "v5")) (Con "Cons" [Var "v4"; Var "v3"])]) (Con "Cons" [Var "v4"; App Opapp (App Opapp (App Opapp (Var "mrg") (Var "v7")) (Con "Cons" [Var "v6"; Var "v5"])) (Var "v3")]))])])))] Dlet (Pvar "empty") (Con "Pair" [Val (Lit (IntLit 0)); Con "Nil" []]) Dletrec [("add_seg","v1", Fun "v2" (Fun "v3" (Fun "v4" (If (App (Opb Leq) (App (Opn Modulo) (Var "v4") (Val (Lit (IntLit 2)))) (Val (Lit (IntLit 0)))) (Con "Cons" [Var "v2"; Var "v3"]) (App Opapp (App Opapp (App Opapp (App Opapp (Var "add_seg") (Var "v1")) (App Opapp (App Opapp (App Opapp (Var "mrg") (Var "v1")) (Var "v2")) (App Opapp (Var "HD") (Var "v3")))) (App Opapp (Var "TL") (Var "v3"))) (App (Opn Divide) (Var "v4") (Val (Lit (IntLit 2)))))))))] Dlet (Pvar "add") (Fun "v3" (Fun "v4" (Fun "v5" (Mat (Var "v5") [(Pcon "Pair" [Pvar "v2"; Pvar "v1"], Con "Pair" [App (Opn Plus) (Var "v2") (Val (Lit (IntLit 1))); App Opapp (App Opapp (App Opapp (App Opapp (Var "add_seg") (Var "v3")) (Con "Cons" [Var "v4"; Con "Nil" []])) (Var "v1")) (Var "v2")])])))) Dletrec [("mrg_all","v3", Fun "v4" (Fun "v5" (Mat (Var "v5") [(Pcon "Nil" [],Var "v4"); (Pcon "Cons" [Pvar "v2"; Pvar "v1"], App Opapp (App Opapp (App Opapp (Var "mrg_all") (Var "v3")) (App Opapp (App Opapp (App Opapp (Var "mrg") (Var "v3")) (Var "v4")) (Var "v2"))) (Var "v1"))])))] Dlet (Pvar "sort") (Fun "v3" (Fun "v4" (Mat (Var "v4") [(Pcon "Pair" [Pvar "v2"; Pvar "v1"], App Opapp (App Opapp (App Opapp (Var "mrg_all") (Var "v3")) (Con "Nil" [])) (Var "v1"))])))