MimIR
MimIR is my Intermediate Representation
Loading...
Searching...
No Matches
mim::Lam Class Reference

A function. More...

#include <mim/lam.h>

Inheritance diagram for mim::Lam:
[legend]

Public Types

using Filter = std::variant<bool, const Def*>
enum class  Dump {
  Expr ,
  Scope ,
  All
}
enum class  Cmp {
  L ,
  G ,
  E ,
  U
}

Public Member Functions

ops
const Def * filter () const
const Def * body () const
Lam * forwardee () const
 λ x = f arg where f is a mut Lam that is_set();
type

See also
proj
const Pi * type () const
const Def * dom () const
const Def * codom () const
bool is_dependent () const
 Does this type() itself or dom() has a Var?
nat_t num_doms () const noexcept
nat_t num_tdoms () const noexcept
const Def * dom (nat_t a, nat_t i) const noexcept
const Def * tdom (nat_t i) const noexcept
template<nat_t A = std::dynamic_extent>
auto doms (Projector auto f) const noexcept
auto tdoms (Projector auto f) const noexcept
template<nat_t A = std::dynamic_extent>
auto doms () const noexcept
auto tdoms () const noexcept
auto doms (nat_t a, Projector auto f) const noexcept
auto doms (nat_t a) const noexcept
nat_t num_codoms () const noexcept
nat_t num_tcodoms () const noexcept
const Def * codom (nat_t a, nat_t i) const noexcept
const Def * tcodom (nat_t i) const noexcept
template<nat_t A = std::dynamic_extent>
auto codoms (Projector auto f) const noexcept
auto tcodoms (Projector auto f) const noexcept
template<nat_t A = std::dynamic_extent>
auto codoms () const noexcept
auto tcodoms () const noexcept
auto codoms (nat_t a, Projector auto f) const noexcept
auto codoms (nat_t a) const noexcept
Setters

Lam::Filter is a std::variant<bool, const Def*> that lets you set the Lam::filter() like this:

lam1->app(true, f, arg);
lam2->app(my_filter_def, f, arg);
Note
The filter belongs to the Lambda and not the body.
See also
Setting Ops
Lam * set (Filter filter, const Def *body)
Lam * set_filter (Filter)
 Set filter first.
Lam * set_body (const Def *body)
 Set body second.
Lam * app (Filter filter, const Def *callee, const Def *arg)
 Set body to an App of callee and arg.
Lam * app (Filter filter, const Def *callee, Defs args)
 Set body to an App of callee and args.
Lam * branch (Filter filter, const Def *cond, const Def *t, const Def *f, const Def *arg=nullptr)
 Set body to an App of (f, t)#cond mem or (f, t)#cond () if mem is nullptr.
Lam * set (Defs ops)
Lam * unset ()
Reduce
Defs reduce (Defs) const
const Def * reduce_body (const Def *arg) const
template<size_t N = std::dynamic_extent>
constexpr auto reduce (const Def *arg) const
Public Member Functions inherited from mim::Def
bool has_hole () const noexcept
 Is this a Hole or does it reach one through Def::deps() up to (and excluding) the next mutable?
World & world () const noexcept
Driver & driver () const noexcept
constexpr flags_t flags () const noexcept
constexpr u32 gid () const noexcept
 Global id - unique number for this Def.
constexpr u32 mark () const noexcept
 Used internally by free_vars().
constexpr size_t hash () const noexcept
constexpr Node node () const noexcept
constexpr MutNode mut_node () const noexcept
 node() of a Def whose Node may be mutable, whether this one is or not; see MutNode.
std::string_view node_name () const
fe::Error & error () const noexcept
Loc err_loc () const
 Returns a blame Loc from World::get_loc, this Def, or its nearest located dependency, in that order.
template<class... Args>
fe::Error & blame (fe::cite_string< Args... > s, Args &&... args) const
 Reports an error that blames this; chain Error::n for Notes and Error::bail to throw.
void bail_expected (fe::Cite what) const
 Blames this for not being what and bails; where Def::expect and friends funnel their diagnostic.
Judge judge () const noexcept
 Def must never become polymorphic: a vptr costs 8 bytes on every node in the World and would shift Def::type_.
bool is_form () const noexcept
bool is_intro () const noexcept
bool is_elim () const noexcept
bool is_meta () const noexcept
const Def * type () const noexcept
 Yields the "raw" type of this Def (maybe nullptr).
const Def * unfold_type () const
 Yields the type of this Def and builds a new Type (LSucc n) if necessary.
template<class T>
const T * isa_type () const
 Is Def::unfold_type a T? Yields nullptr for Level, which has no type at all.
bool is_term () const
 Is this Def a term, i.e. is its type() a Type?
const Def * arity () const
 Number of elements available to Extract / Insert (may be dynamic).
template<size_t N = std::dynamic_extent>
constexpr auto ops () const noexcept
const Def * op (size_t i) const noexcept
constexpr size_t num_ops () const noexcept
bool is_set () const
Def * set (size_t i, const Def *)
 Successively set from left to right.
Def * set (Defs ops)
 Set ops all at once (no Def::unset necessary beforehand).
Def * unset ()
 Unsets all Def::ops; works even, if not set at all or only partially set.
Def * set_type (const Def *)
 Update type.
Defs deps () const noexcept
const Def * dep (size_t i) const noexcept
size_t num_deps () const noexcept
nat_t num_projs () const
 Yields Def::arity(), if it is a Lit, or 1 otherwise.
nat_t num_tprojs () const
 As above but yields 1, if an Arr/Pack exceeds Flags::scalarize_threshold.
const Def * proj (nat_t a, nat_t i) const
 Similar to World::extract while assuming an arity of a, but also works on Sigmas and Arrays.
const Def * tproj (nat_t i) const
 As above but takes Def::num_tprojs.
template<nat_t A = std::dynamic_extent>
auto projs (Projector auto f) const
 Splits this Def via Def::projections into an Array (if A == std::dynamic_extent) or std::array (otherwise).
auto tprojs (Projector auto f) const
auto projs (nat_t a, Projector auto f) const
template<nat_t A = std::dynamic_extent>
auto projs () const
auto tprojs () const
auto projs (nat_t a) const
nat_t num_vars () noexcept
nat_t num_tvars () noexcept
const Def * var (nat_t a, nat_t i) noexcept
const Def * tvar (nat_t i) noexcept
template<nat_t A = std::dynamic_extent>
auto vars (Projector auto f) noexcept
auto tvars (Projector auto f) noexcept
template<nat_t A = std::dynamic_extent>
auto vars () noexcept
auto tvars () noexcept
auto vars (nat_t a, Projector auto f) noexcept
auto vars (nat_t a) noexcept
const Def * var ()
 Not necessarily a Var: E.g., if the return type is [], this will yield ().
const Def * var_type ()
 If this is a binder, compute the type of its Variable.
const Var * has_var ()
 Only returns not nullptr, if Var of this mutable has ever been created.
const Var * has_var () const
 As above if this is a mutable.
template<class D = Def>
std::pair< D *, const Var * > isa_binder () const
 Is this a mutable that introduces a Var?
Muts local_muts () const
 Mutables reachable by following immutable deps(); mut->local_muts() is by definition the set { mut }.
Vars local_vars () const
 Vars reachable by following immutable deps().
Vars free_vars () const
 Global set of free Vars: extends local_vars() by transitively following mutables as well.
Vars free_vars ()
 As above but drives (and caches) the fixed-point iteration for mutables.
Muts users ()
 Set of mutables where this mutable is locally referenced.
bool is_open () const
 Same as has_free_vars().
bool is_closed () const
 Same as !has_free_vars().
bool is_ground () const
 Immutable that contains neither mutables nor Vars.
Def * outermost_binder () const
 Transitively walks up free_vars() till the outermoust binder has been found.
bool nests (Def *mut)
 Does this nest mut?
bool nests (const Def *def)
 Does this nest def?
bool in_scope (Def *mut) const
 Is every free Var of this bound by mut or by a mutable that nests mut?
bool has_free_var (const Var *) const
 Same as free_vars().contains(var).
bool has_free_vars () const
 Same as !free_vars().empty().
bool has_free_vars_in (Vars) const
 Same as vars.has_intersection(free_vars()).
bool is_external () const noexcept
void externalize ()
void internalize ()
void transfer_external (Def *to)
bool is_annex () const noexcept
bool is_mutable () const noexcept
template<class T = Def>
const T * isa_imm () const
template<class T = Def>
const T * as_imm () const
template<class T = Def, bool invert = false>
T * isa_mut () const
 If this is mutable, it will cast constness away and perform a dynamic_cast to T.
template<class T = Def, bool invert = false>
T * as_mut () const
 Asserts that this is a mutable, casts constness away and performs a static_cast to T.
template<class T, class... Args>
T * expect (fe::cite_string< Args... > fmt, Args &&... args)
 Like Def::as but - instead of merely asserting in Debug builds - bails via Def::bail_expected when the cast fails; hides fe::RuntimeCast::expect, as a Def can blame itself with a Loc.
template<class T, class... Args>
const T * expect (fe::cite_string< Args... > fmt, Args &&... args) const
 const version.
template<class T = Def, class... Args>
T * expect_mut (fe::cite_string< Args... > fmt, Args &&... args) const
 The mutable counterpart of Def::expect.
Dbg dbg () const
 Looks up Def::dbg_ in Driver::dbg.
DbgKey dbg_key () const
 Cheap handle for other->set(this->dbg_key()).
Loc loc () const
Sym sym () const
std::string unique_name () const
 name + "_" + Def::gid
template<bool Ow = false>
const Def * set (Loc l) const
template<bool Ow = false>
Def * set (Loc l)
template<bool Ow = false>
const Def * set (Sym s) const
template<bool Ow = false>
Def * set (Sym s)
template<bool Ow = false>
const Def * set (std::string s) const
template<bool Ow = false>
Def * set (std::string s)
template<bool Ow = false>
const Def * set (Loc l, Sym s) const
template<bool Ow = false>
Def * set (Loc l, Sym s)
template<bool Ow = false>
const Def * set (Loc l, std::string s) const
template<bool Ow = false>
Def * set (Loc l, std::string s)
template<bool Ow = false>
const Def * set (Dbg d) const
template<bool Ow = false>
Def * set (Dbg d)
template<bool Ow = false>
const Def * set (DbgKey key) const
 Adopts the Dbg behind key - just copies the interned index, so nothing is re-interned.
template<bool Ow = false>
Def * set (DbgKey key)
const Def * debug_prefix (std::string) const
const Def * debug_suffix (std::string) const
const Def * immutabilize ()
bool is_immutabilizable ()
template<size_t N = std::dynamic_extent>
constexpr auto reduce (const Def *arg) const
size_t reduction_offset () const noexcept
 First Def::op that needs to be dealt with during reduction; e.g.
const Def * check (size_t i, const Def *def)
 Checks whether the ith operand can be set to def.
const Def * check ()
 After all Def::ops have been Def::set, this method will be invoked to check the type of this mutable.
bool needs_zonk () const
 Yields true, if Def::local_muts() contain a Hole that is set.
const Def * zonk () const
 If Holes have been filled, reconstruct the program without them.
const Def * zonk_mut () const
 If mutable, zonk()s all ops and tries to immutabilize it; otherwise just zonk.
void dot (std::ostream &os, DotConfig cfg={}) const
void dot (const char *file=nullptr, DotConfig cfg={}) const
 Same as above but write to file or std::cout if file is nullptr.
void dot (const std::string &file, DotConfig cfg={}) const
void dump () const
 Dump::Expr - one line, no analysis.
void dump (Dump) const
void write (Dump) const
void write (Dump, const char *file) const
std::ostream & stream (std::ostream &, Dump) const
Public Member Functions inherited from mim::Setters< Lam >
const Lam * set (Args &&... args) const

Static Public Member Functions

Eta-Conversion
static Lam * eta_expand (Filter, const Def *f)
static Lam * eta_expand (const Def *f)
 Use true Filter.
static const Def * eta_reduce (const Def *def)
 Fast-forwards def along its chain of η-redexes λ x = f x where x ∉ FV(f).
Static Public Member Functions inherited from mim::Def
static DefVec zonk (Defs defs)
 zonks all defs and returns a new DefVec.
static DefVec cat (Defs a, Defs b)
static DefVec cat (const Def *a, Defs bs)
static DefVec cat (Defs as, const Def *b)
static Cmp cmp (const Def *a, const Def *b)
static bool less (const Def *a, const Def *b)
static bool greater (const Def *a, const Def *b)

Static Public Attributes

static constexpr auto Node = mim::Node::Lam
static constexpr size_t Num_Ops = 2

Friends

class World

Continuations

See also
Pi: Continuations
const Pi * ret_pi () const
const Def * ret_dom () const
const Def * ret_var ()
 Yields the Lam::var of the Lam::ret_pi.
static const Lam * isa_cn (const Def *d)
static const Lam * isa_returning (const Def *d)
static const Lam * isa_basicblock (const Def *d)
static Lam * isa_mut_cn (const Def *d)
static Lam * isa_mut_returning (const Def *d)
static Lam * isa_mut_basicblock (const Def *d)
static const Def * isa_ret_arg (const Def *d)
 Yields the y of λ (x, ret) = ret y - the argument d's body hands to its Lam::ret_var.

Rewritable

bool is_rewritable ()
static Lam * isa_rewritable (const Def *def)
 Yields def as a mutable Lam, if it is_rewritable() and nullptr otherwise.

Additional Inherited Members

Protected Member Functions inherited from mim::Def
void collect_locals ()
 Fills in an immutable's local Vars and Muts once it is in the sea.
 Def (World *, Node, const Def *type, Defs ops, flags_t flags)
 Constructor for an immutable Def.
 Def (Node, const Def *type, Defs ops, flags_t flags)
 As above but World retrieved from type.
 Def (Node, const Def *type, size_t num_ops, flags_t flags)
 Constructor for a mutable Def.
 Def (Node, Def *binder)
 Constructor for a Var; stores its binder.
Sym sym (const char *) const
Sym sym (std::string_view) const
Sym sym (std::string) const
void set_dbg (Dbg) const
 Interns dbg via Driver::dbg and stores the key in Def::dbg_.
void set_dbg_ (Dbg, bool ow) const
 Backs Def::set(Dbg).
void set_dbg_key_ (DbgKey, bool ow) const
 Backs Def::set(DbgKey).
Protected Attributes inherited from mim::Def
union mim::Def:: { ... }  
flags_t flags_
u8 curry_ = 0
u8 trip_ = 0

Detailed Description

A function.

See also
Pi

Definition at line 91 of file lam.h.

Member Typedef Documentation

◆ Filter

using mim::Lam::Filter = std::variant<bool, const Def*>

Definition at line 99 of file lam.h.

Member Function Documentation

◆ app() [1/2]

Lam * mim::Lam::app ( Filter filter,
const Def * callee,
const Def * arg )

Set body to an App of callee and arg.

Definition at line 35 of file lam.cpp.

References mim::World::app(), mim::World::filter(), mim::Def::set(), and mim::Def::world().

Referenced by app(), mim::plug::btensor::app_cps(), branch(), forwardee(), and isa_ret_arg().

◆ app() [2/2]

Lam * mim::Lam::app ( Filter filter,
const Def * callee,
Defs args )

Set body to an App of callee and args.

Definition at line 38 of file lam.cpp.

References app(), filter(), and mim::Def::world().

◆ body()

◆ branch()

Lam * mim::Lam::branch ( Filter filter,
const Def * cond,
const Def * t,
const Def * f,
const Def * arg = nullptr )

Set body to an App of (f, t)#cond mem or (f, t)#cond () if mem is nullptr.

Definition at line 40 of file lam.cpp.

References app(), filter(), and mim::Def::world().

◆ codom() [1/2]

const Def * mim::Lam::codom ( ) const
inline

Definition at line 114 of file lam.h.

References mim::Pi::codom(), and type().

Referenced by codom(), mim::plug::cps::convertible(), and mim::StaticArgOpt::rewrite_mut_Lam().

◆ codom() [2/2]

const Def * mim::Lam::codom ( nat_t a,
nat_t i ) const
inlinenoexcept

Definition at line 118 of file lam.h.

References codom(), and MIM_PROJ.

◆ codoms() [1/4]

template<nat_t A = std::dynamic_extent>
auto mim::Lam::codoms ( ) const
inlinenoexcept

Definition at line 118 of file lam.h.

◆ codoms() [2/4]

auto mim::Lam::codoms ( nat_t a) const
inlinenoexcept

Definition at line 118 of file lam.h.

◆ codoms() [3/4]

auto mim::Lam::codoms ( nat_t a,
Projector auto f ) const
inlinenoexcept

Definition at line 118 of file lam.h.

◆ codoms() [4/4]

template<nat_t A = std::dynamic_extent>
auto mim::Lam::codoms ( Projector auto f) const
inlinenoexcept

Definition at line 118 of file lam.h.

◆ dom() [1/2]

const Def * mim::Lam::dom ( ) const
inline

Definition at line 113 of file lam.h.

References mim::Pi::dom(), and type().

Referenced by dom(), mim::eta_callee(), and is_dependent().

◆ dom() [2/2]

const Def * mim::Lam::dom ( nat_t a,
nat_t i ) const
inlinenoexcept

Definition at line 117 of file lam.h.

References dom(), and MIM_PROJ.

◆ doms() [1/4]

template<nat_t A = std::dynamic_extent>
auto mim::Lam::doms ( ) const
inlinenoexcept

Definition at line 117 of file lam.h.

◆ doms() [2/4]

auto mim::Lam::doms ( nat_t a) const
inlinenoexcept

Definition at line 117 of file lam.h.

◆ doms() [3/4]

auto mim::Lam::doms ( nat_t a,
Projector auto f ) const
inlinenoexcept

Definition at line 117 of file lam.h.

◆ doms() [4/4]

template<nat_t A = std::dynamic_extent>
auto mim::Lam::doms ( Projector auto f) const
inlinenoexcept

Definition at line 117 of file lam.h.

Referenced by mim::plug::ll::Emitter::emit_imported().

◆ eta_expand() [1/2]

Lam * mim::Lam::eta_expand ( const Def * f)
inlinestatic

Use true Filter.

Definition at line 179 of file lam.h.

References eta_expand().

Referenced by eta_expand().

◆ eta_expand() [2/2]

◆ eta_reduce()

const Def * mim::Lam::eta_reduce ( const Def * def)
static

Fast-forwards def along its chain of η-redexes λ x = f x where x ∉ FV(f).

Yields the end of the chain or nullptr if def is no η-redex. A chain running into an η-cycle like ping = λn.pong n; pong = λn.ping n ends at the cycle's entry. Hence, a Lam on such a cycle is no η-redex. Neither is a Lam whose reduct mentions an η-redex, like b = λx.(e, b)#c x: reducing might unfold a recursion.

Definition at line 76 of file lam.cpp.

References mim::eta_step().

Referenced by mim::EtaConv::rewrite().

◆ filter()

◆ forwardee()

Lam * mim::Lam::forwardee ( ) const

λ x = f arg where f is a mut Lam that is_set();

Definition at line 27 of file lam.cpp.

References app(), body(), and mim::Def::isa_mut().

◆ is_dependent()

bool mim::Lam::is_dependent ( ) const
inline

Does this type() itself or dom() has a Var?

Definition at line 116 of file lam.h.

References dom(), mim::Def::has_var(), and type().

◆ is_rewritable()

bool mim::Lam::is_rewritable ( )
inline

Is this neither is_external() nor is_annex() but is_set()?

Definition at line 191 of file lam.h.

References mim::Def::is_annex(), mim::Def::is_external(), and mim::Def::is_set().

Referenced by mim::Scalarize::rewrite_mut_Lam().

◆ isa_basicblock()

const Lam * mim::Lam::isa_basicblock ( const Def * d)
inlinestatic

◆ isa_cn()

const Lam * mim::Lam::isa_cn ( const Def * d)
inlinestatic

◆ isa_mut_basicblock()

Lam * mim::Lam::isa_mut_basicblock ( const Def * d)
inlinestatic

Definition at line 130 of file lam.h.

References mim::Pi::isa_basicblock().

Referenced by mim::plug::clos::phase::ClosConvPrep::analyze().

◆ isa_mut_cn()

Lam * mim::Lam::isa_mut_cn ( const Def * d)
inlinestatic

Definition at line 128 of file lam.h.

References mim::Pi::isa_cn().

◆ isa_mut_returning()

Lam * mim::Lam::isa_mut_returning ( const Def * d)
inlinestatic

Definition at line 129 of file lam.h.

References mim::Pi::isa_returning().

◆ isa_ret_arg()

const Def * mim::Lam::isa_ret_arg ( const Def * d)
static

Yields the y of λ (x, ret) = ret y - the argument d's body hands to its Lam::ret_var.

nullptr if d is not a set, mutable Lam with such a body.

Definition at line 46 of file lam.cpp.

References app(), body(), and ret_var().

Referenced by mim::plug::tensor::is_copy_comb(), and mim::plug::tensor::is_identity_post().

◆ isa_returning()

const Lam * mim::Lam::isa_returning ( const Def * d)
inlinestatic

Definition at line 126 of file lam.h.

References mim::Pi::isa_returning().

◆ isa_rewritable()

Lam * mim::Lam::isa_rewritable ( const Def * def)
inlinestatic

Yields def as a mutable Lam, if it is_rewritable() and nullptr otherwise.

Definition at line 193 of file lam.h.

References mim::Def::isa_mut().

Referenced by mim::LamSpec::rewrite_imm_App().

◆ num_codoms()

nat_t mim::Lam::num_codoms ( ) const
inlinenoexcept

Definition at line 118 of file lam.h.

◆ num_doms()

nat_t mim::Lam::num_doms ( ) const
inlinenoexcept

Definition at line 117 of file lam.h.

Referenced by mim::optimize(), and mim::plug::mem::phase::AddMem::rewrite_mut_Lam().

◆ num_tcodoms()

nat_t mim::Lam::num_tcodoms ( ) const
inlinenoexcept

Definition at line 118 of file lam.h.

◆ num_tdoms()

nat_t mim::Lam::num_tdoms ( ) const
inlinenoexcept

Definition at line 117 of file lam.h.

Referenced by mim::StaticArgOpt::rewrite_mut_Lam().

◆ reduce() [1/2]

template<size_t N = std::dynamic_extent>
auto mim::Def::reduce ( const Def * arg) const
inlineconstexpr
See also
World::reduce

Definition at line 681 of file def.h.

◆ reduce() [2/2]

Defs mim::Lam::reduce ( Defs args) const

Definition at line 44 of file lam.cpp.

References mim::Def::reduce(), and mim::Def::world().

Referenced by reduce_body().

◆ reduce_body()

const Def * mim::Lam::reduce_body ( const Def * arg) const
inline

Definition at line 173 of file lam.h.

References reduce().

Referenced by mim::plug::affine::phase::LowerIndex::rewrite_imm_App().

◆ ret_dom()

const Def * mim::Lam::ret_dom ( ) const
inline

Definition at line 134 of file lam.h.

References mim::Pi::dom(), and ret_pi().

◆ ret_pi()

const Pi * mim::Lam::ret_pi ( ) const
inline

Definition at line 133 of file lam.h.

References mim::Pi::ret_pi(), and type().

Referenced by ret_dom(), and ret_var().

◆ ret_var()

const Def * mim::Lam::ret_var ( )
inline

◆ set() [1/2]

Lam * mim::Lam::set ( Defs ops)
inline

Definition at line 165 of file lam.h.

References mim::Def::ops(), and mim::Def::set().

◆ set() [2/2]

◆ set_body()

Lam * mim::Lam::set_body ( const Def * body)
inline

Set body second.

Definition at line 158 of file lam.h.

References body(), and mim::Def::set().

Referenced by mim::ast::NomDecl::emit_sugar().

◆ set_filter()

Lam * mim::Lam::set_filter ( Filter filter)

Set filter first.

Definition at line 33 of file lam.cpp.

References filter(), mim::Def::set(), and mim::Def::world().

◆ tcodom()

const Def * mim::Lam::tcodom ( nat_t i) const
inlinenoexcept

Definition at line 118 of file lam.h.

◆ tcodoms() [1/2]

auto mim::Lam::tcodoms ( ) const
inlinenoexcept

Definition at line 118 of file lam.h.

◆ tcodoms() [2/2]

auto mim::Lam::tcodoms ( Projector auto f) const
inlinenoexcept

Definition at line 118 of file lam.h.

◆ tdom()

const Def * mim::Lam::tdom ( nat_t i) const
inlinenoexcept

Definition at line 117 of file lam.h.

◆ tdoms() [1/2]

auto mim::Lam::tdoms ( ) const
inlinenoexcept

Definition at line 117 of file lam.h.

◆ tdoms() [2/2]

auto mim::Lam::tdoms ( Projector auto f) const
inlinenoexcept

Definition at line 117 of file lam.h.

Referenced by mim::StaticArgOpt::rewrite_mut_Lam().

◆ type()

◆ unset()

Lam * mim::Lam::unset ( )
inline

Definition at line 166 of file lam.h.

References mim::Def::unset().

◆ World

friend class World
friend

Definition at line 203 of file lam.h.

References World.

Referenced by World.

Member Data Documentation

◆ Node

auto mim::Lam::Node = mim::Node::Lam
staticconstexpr

Definition at line 199 of file lam.h.

◆ Num_Ops

size_t mim::Lam::Num_Ops = 2
staticconstexpr

Definition at line 200 of file lam.h.


The documentation for this class was generated from the following files: