eyg/interpreter/state

Types

pub type Builtin(m) {
  Arity1(
    fn(
      value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
      m,
      Env(m),
      Stack(m),
    ) -> Result(
      #(Control(m), Env(m), Stack(m)),
      break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
    ),
  )
  Arity2(
    fn(
      value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
      value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
      m,
      Env(m),
      Stack(m),
    ) -> Result(
      #(Control(m), Env(m), Stack(m)),
      break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
    ),
  )
  Arity3(
    fn(
      value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
      value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
      value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
      m,
      Env(m),
      Stack(m),
    ) -> Result(
      #(Control(m), Env(m), Stack(m)),
      break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
    ),
  )
  Arity4(
    fn(
      value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
      value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
      value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
      value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
      m,
      Env(m),
      Stack(m),
    ) -> Result(
      #(Control(m), Env(m), Stack(m)),
      break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
    ),
  )
}

Constructors

pub type Context(m) =
  #(List(#(Kontinue(m), m)), Env(m))
pub type Control(m) {
  E(#(tree.Expression(m), m))
  V(value.Value(m, #(List(#(Kontinue(m), m)), Env(m))))
}

Constructors

pub type Debug(m) =
  #(
    break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
    m,
    Env(m),
    Stack(m),
  )
pub type Env(m) {
  Env(
    scope: List(
      #(
        String,
        value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
      ),
    ),
    references: dict.Dict(
      v1.Cid,
      value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
    ),
    builtins: dict.Dict(String, Builtin(m)),
  )
}

Constructors

pub type Extrinsic(m) =
  fn(value.Value(m, #(List(#(Kontinue(m), m)), Env(m)))) -> Result(
    value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
    break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
  )
pub type Kontinue(m) {
  Arg(#(tree.Expression(m), m), Env(m))
  Apply(
    value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
    Env(m),
  )
  Assign(String, #(tree.Expression(m), m), Env(m))
  CallWith(
    value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
    Env(m),
  )
  Delimit(
    String,
    value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
    Env(m),
    Bool,
  )
}

Constructors

pub type Next(m) {
  Loop(Control(m), Env(m), Stack(m))
  Break(
    Result(
      value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
      #(
        break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
        m,
        Env(m),
        Stack(m),
      ),
    ),
  )
}

Constructors

pub type Reason(m) =
  break.Reason(m, #(List(#(Kontinue(m), m)), Env(m)))
pub type Return(m) =
  Result(
    #(Control(m), Env(m), Stack(m)),
    break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
  )
pub type Stack(m) {
  Stack(Kontinue(m), m, Stack(m))
  Empty(
    dict.Dict(
      String,
      fn(value.Value(m, #(List(#(Kontinue(m), m)), Env(m)))) -> Result(
        value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
        break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
      ),
    ),
  )
}

Constructors

pub type Value(m) =
  value.Value(m, #(List(#(Kontinue(m), m)), Env(m)))

Values

pub fn apply(
  value: value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
  env: Env(m),
  k: Kontinue(m),
  meta: m,
  rest: Stack(m),
) -> Result(
  #(Control(m), Env(m), Stack(m)),
  #(
    break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
    m,
    Env(m),
    Stack(m),
  ),
)
pub fn call(
  f: value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
  arg: value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
  meta: m,
  env: Env(m),
  k: Stack(m),
) -> Result(
  #(Control(m), Env(m), Stack(m)),
  break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
)
pub fn deep(
  label: String,
  handle: value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
  exec: value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
  meta: m,
  env: Env(m),
  k: Stack(m),
) -> Result(
  #(Control(m), Env(m), Stack(m)),
  break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
)
pub fn eval(
  exp: #(tree.Expression(m), m),
  env: Env(m),
  k: Stack(m),
) -> Result(
  #(Control(m), Env(m), Stack(m)),
  #(break.Reason(a, b), m, Env(m), Stack(m)),
)
pub fn perform(
  label: String,
  arg: value.Value(m, #(List(#(Kontinue(m), m)), Env(m))),
  i_env: Env(m),
  k: Stack(m),
) -> Result(
  #(Control(m), Env(m), Stack(m)),
  break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
)
pub fn step(c: Control(m), env: Env(m), k: Stack(m)) -> Next(m)
pub fn try(
  return: Result(
    #(Control(m), Env(m), Stack(m)),
    #(
      break.Reason(m, #(List(#(Kontinue(m), m)), Env(m))),
      m,
      Env(m),
      Stack(m),
    ),
  ),
) -> Next(m)
Search Document