eyg/ir/tree
Types
pub type Expression(m) {
Variable(label: String)
Lambda(label: String, body: #(Expression(m), m))
Apply(func: #(Expression(m), m), argument: #(Expression(m), m))
Let(
label: String,
definition: #(Expression(m), m),
body: #(Expression(m), m),
)
Binary(value: BitArray)
Integer(value: Int)
String(value: String)
Tail
Cons
Vacant
Empty
Extend(label: String)
Select(label: String)
Overwrite(label: String)
Tag(label: String)
Case(label: String)
NoCases
Perform(label: String)
Handle(label: String)
Builtin(identifier: String)
Reference(identifier: v1.Cid)
Release(package: String, release: Int, identifier: v1.Cid)
}
Constructors
-
Variable(label: String) -
Lambda(label: String, body: #(Expression(m), m)) -
Apply(func: #(Expression(m), m), argument: #(Expression(m), m)) -
Let( label: String, definition: #(Expression(m), m), body: #(Expression(m), m), ) -
Binary(value: BitArray) -
Integer(value: Int) -
String(value: String) -
Tail -
Cons -
Vacant -
Empty -
Extend(label: String) -
Select(label: String) -
Overwrite(label: String) -
Tag(label: String) -
Case(label: String) -
NoCases -
Perform(label: String) -
Handle(label: String) -
Builtin(identifier: String) -
Reference(identifier: v1.Cid) -
Release(package: String, release: Int, identifier: v1.Cid)
pub type Node(m) =
#(Expression(m), m)
Values
pub fn add(
a: #(Expression(Nil), Nil),
b: #(Expression(Nil), Nil),
) -> #(Expression(Nil), Nil)
pub fn apply(
func: #(Expression(m), m),
argument: #(Expression(m), m),
) -> #(Expression(m), Nil)
pub fn binary(value: BitArray) -> #(Expression(m), Nil)
pub fn block(
assignments: List(#(String, #(Expression(Nil), Nil))),
then: #(Expression(Nil), Nil),
) -> #(Expression(Nil), Nil)
pub fn builtin(identifier: String) -> #(Expression(m), Nil)
pub fn call(
f: #(Expression(Nil), Nil),
args: List(#(Expression(Nil), Nil)),
) -> #(Expression(Nil), Nil)
pub fn case_(label: String) -> #(Expression(m), Nil)
pub fn clear_annotation(
source: #(Expression(a), a),
) -> #(Expression(Nil), Nil)
pub fn cons() -> #(Expression(m), Nil)
pub fn do_gather_snippets(
node: #(Expression(m), m),
comments: List(String),
assigns: List(#(String, #(Expression(m), m), m)),
acc: List(
#(List(String), List(#(String, #(Expression(m), m), m))),
),
) -> List(
#(List(String), List(#(String, #(Expression(m), m), m))),
)
pub fn do_list(
reversed: List(#(Expression(Nil), Nil)),
acc: #(Expression(Nil), Nil),
) -> #(Expression(Nil), Nil)
pub fn do_record(
reversed: List(#(String, #(Expression(Nil), Nil))),
acc: #(Expression(Nil), Nil),
) -> #(Expression(Nil), Nil)
pub fn empty() -> #(Expression(m), Nil)
pub fn extend(label: String) -> #(Expression(m), Nil)
pub fn false() -> #(Expression(Nil), Nil)
pub fn free_variables(exp: #(Expression(m), m)) -> List(String)
pub fn from_block(
assigns: List(#(String, #(Expression(m), m), m)),
tail: #(Expression(m), m),
) -> #(Expression(m), m)
pub fn func(
params: List(String),
body: #(Expression(Nil), Nil),
) -> #(Expression(Nil), Nil)
pub fn gather_snippets(
source: #(Expression(m), m),
) -> List(
#(List(String), List(#(String, #(Expression(m), m), m))),
)
pub fn get(
value: #(Expression(Nil), Nil),
label: String,
) -> #(Expression(Nil), Nil)
pub fn get_annotation(in: #(Expression(m), m)) -> List(m)
pub fn handle(label: String) -> #(Expression(m), Nil)
pub fn integer(value: Int) -> #(Expression(m), Nil)
pub fn lambda(
label: String,
body: #(Expression(m), m),
) -> #(Expression(m), Nil)
pub fn let_(
label: String,
value: #(Expression(m), m),
then: #(Expression(m), m),
) -> #(Expression(m), Nil)
pub fn list(
items: List(#(Expression(Nil), Nil)),
) -> #(Expression(Nil), Nil)
pub fn list_builtins(exp: #(Expression(m), m)) -> List(String)
pub fn list_named_references(
exp: #(Expression(m), m),
) -> List(#(String, Int, v1.Cid))
pub fn list_references(exp: #(Expression(m), m)) -> List(v1.Cid)
pub fn map_annotation(
in: #(Expression(a), a),
f: fn(a) -> b,
) -> #(Expression(b), b)
pub fn map_release(
exp: #(Expression(m), m),
mapper: fn(String, Int, v1.Cid) -> #(String, Int, v1.Cid),
) -> #(Expression(m), m)
pub fn match(
value: #(Expression(Nil), Nil),
matches: List(#(String, #(Expression(Nil), Nil))),
) -> #(Expression(Nil), Nil)
pub fn multiply(
a: #(Expression(Nil), Nil),
b: #(Expression(Nil), Nil),
) -> #(Expression(Nil), Nil)
pub fn nocases() -> #(Expression(m), Nil)
pub fn overwrite(label: String) -> #(Expression(m), Nil)
pub fn perform(label: String) -> #(Expression(m), Nil)
pub fn record(
fields: List(#(String, #(Expression(Nil), Nil))),
) -> #(Expression(Nil), Nil)
pub fn reference(identifier: v1.Cid) -> #(Expression(m), Nil)
pub fn release(
package: String,
release: Int,
identifier: v1.Cid,
) -> #(Expression(m), Nil)
pub fn select(label: String) -> #(Expression(m), Nil)
pub fn string(value: String) -> #(Expression(m), Nil)
pub fn subtract(
a: #(Expression(Nil), Nil),
b: #(Expression(Nil), Nil),
) -> #(Expression(Nil), Nil)
pub fn tag(label: String) -> #(Expression(m), Nil)
pub fn tagged(
label: String,
inner: #(Expression(Nil), Nil),
) -> #(Expression(Nil), Nil)
pub fn tail() -> #(Expression(m), Nil)
pub fn true() -> #(Expression(Nil), Nil)
pub fn unit() -> #(Expression(m), Nil)
pub fn vacant() -> #(Expression(m), Nil)
pub fn variable(label: String) -> #(Expression(m), Nil)