MimIR 0.1
MimIR is my Intermediate Representation
|
#include "mim/plug/clos/clos.h"
#include <mim/config.h>
#include <mim/pass/eta_exp.h>
#include <mim/pass/eta_red.h>
#include <mim/pass/pass.h>
#include <mim/pass/pipelinebuilder.h>
#include <mim/pass/scalarize.h>
#include "mim/plug/clos/pass/branch_clos_elim.h"
#include "mim/plug/clos/pass/clos2sjlj.h"
#include "mim/plug/clos/pass/clos_conv_prep.h"
#include "mim/plug/clos/pass/lower_typed_clos_prep.h"
#include "mim/plug/clos/phase/clos_conv.h"
#include "mim/plug/clos/phase/lower_typed_clos.h"
Go to the source code of this file.
Namespaces | |
namespace | mim |
namespace | mim::plug |
namespace | mim::plug::clos |
The clos Plugin | |
Functions | |
Plugin | mim_get_plugin () |
Closures | |
ClosLit | mim::plug::clos::isa_clos_lit (const Def *def, bool fn_isa_lam=true) |
Tries to match a closure literal. | |
const Def * | mim::plug::clos::clos_pack (const Def *env, const Def *fn, const Def *ct=nullptr) |
Pack a typed closure. This assumes that fn expects the environment as its Clos_Env_Paramth argument. | |
std::tuple< const Def *, const Def *, const Def * > | mim::plug::clos::clos_unpack (const Def *c) |
Deconstruct a closure into (env_type, function, env) . | |
const Def * | mim::plug::clos::clos_apply (const Def *closure, const Def *args) |
Apply a closure to arguments. | |
Closure Types | |
const Sigma * | mim::plug::clos::isa_clos_type (const Def *def) |
Sigma * | mim::plug::clos::clos_type (const Pi *pi) |
Creates a typed closure type from pi . | |
const Pi * | mim::plug::clos::clos_type_to_pi (const Def *ct, const Def *new_env_type=nullptr) |
Convert a closure type to a Pi, where the environment type has been removed or replaced by new_env_type (if new_env_type != nullptr ) | |
Closure Environment | |
const Def * | mim::plug::clos::clos_insert_env (size_t i, const Def *env, std::function< const Def *(size_t)> f) |
const Def * | mim::plug::clos::clos_remove_env (size_t i, std::function< const Def *(size_t)> f) |
const Def * | mim::plug::clos::ctype (World &w, Defs doms, const Def *env_type=nullptr) |
Plugin mim_get_plugin | ( | ) |
Definition at line 21 of file clos.cpp.
References mim::Annex::Base, mim::get(), MIM_EXPORT, mim::plug::clos::register_normalizers(), mim::register_pass(), and mim::register_phase().