Thorin 1.9.0
The Higher ORder INtermediate representation
Loading...
Searching...
No Matches
lam.h File Reference
#include <variant>
#include "thorin/def.h"
Include dependency graph for lam.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  thorin::Pi
 A dependent function type. More...
 
class  thorin::Lam
 A function. More...
 
class  thorin::App
 

Namespaces

namespace  thorin
 

Typedefs

Lam

GIDSet / GIDMap keyed by Lam::gid of Lam*.

template<class To >
using thorin::LamMap = GIDMap< Lam *, To >
 
using thorin::LamSet = GIDSet< Lam * >
 
using thorin::Lam2Lam = LamMap< Lam * >
 

Functions

Helpers to work with Functions
const Appthorin::isa_callee (const Def *def, size_t i)
 
Lamthorin::isa_workable (Lam *lam)
 These are Lams that are neither nullptr, nor Lam::is_external, nor Lam::is_unset.
 
std::pair< const App *, Lam * > thorin::isa_apped_mut_lam (const Def *def)
 
std::deque< const App * > thorin::decurry (const Def *)
 Yields curried Apps in a flat std::deque<const App*>.
 
const Defthorin::compose_cn (const Def *f, const Def *g)
 The high level view is:
 
std::pair< const Def *, std::vector< const Def * > > thorin::collect_args (const Def *def)
 Helper function to cope with the fact that normalizers take all arguments and not only its axiom arguments.