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)
Search Document