val typecheck : Types.t_exp -> (Types.ftype, [> Types.typechecking_error]) result val typecheck_polymorphic : Types.t_exp -> (Types.type_f, [> Types.typechecking_error]) result