Typing.infer "hd (cons 1 nil)";; Typing.infer "hd (cons 1 [])";; Typing.pmu;; CoreML.of_string "\\x.x + x";; CoreML.of_string "\\(x.x + x)";; CoreML.of_string "\\x.(x + x)";; CoreML.of_string "\\x.(+ x x)";; CoreML.of_string "\\x.(+ x) x";; CoreML.of_string "\\x.+ (x x)";; Typing.pmu;; Typing.to_up (Typing.pmu,CoreML.of_string "hd (cons 1 nil)",Typing.tvar 0);; Typing.to_up (Typing.pmu,CoreML.of_string "hd (cons 1 [])",Typing.tvar 0);; let up = Typing.to_up (Typing.pmu,CoreML.of_string "hd (cons 1 [])",Typing.tvar 0);; Typing.unify up;; Typing.infer "hd (cons 1 [])";; Typing.infer "cons 1 []";; let up = Typing.to_up (Typing.pmu,CoreML.of_string "cons 1 []",Typing.tvar 0);; Typing.pmu;;