本文整理汇总了C++中type_checker::infer方法的典型用法代码示例。如果您正苦于以下问题:C++ type_checker::infer方法的具体用法?C++ type_checker::infer怎么用?C++ type_checker::infer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类type_checker
的用法示例。
在下文中一共展示了type_checker::infer方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: extract
expr extract(expr const & e) {
lean_assert(is_nested_declaration(e));
expr const & d = visit(get_nested_declaration_arg(e));
name new_name = mk_name_for(e);
name new_real_name = get_namespace(m_env) + new_name;
collected_locals locals;
collect_locals(d, locals);
buffer<name> uparams;
collect_univ_params(d).to_buffer(uparams);
expr new_value = Fun(locals.get_collected(), d);
expr new_type = m_tc.infer(new_value).first;
level_param_names new_ps = to_list(uparams);
levels ls = param_names_to_levels(new_ps);
m_env = module::add(m_env, check(m_env, mk_definition(m_env, new_real_name, new_ps,
new_type, new_value)));
if (new_name != new_real_name)
m_env = add_expr_alias_rec(m_env, new_name, new_real_name);
decl_attributes const & attrs = get_nested_declaration_attributes(e);
m_env = attrs.apply(m_env, m_ios, new_real_name, get_namespace(m_env));
return mk_app(mk_constant(new_real_name, ls), locals.get_collected());
}