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
-
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))), ), )
pub type Control(m) {
E(#(tree.Expression(m), m))
V(value.Value(m, #(List(#(Kontinue(m), m)), Env(m))))
}
Constructors
-
E(#(tree.Expression(m), m)) -
V(value.Value(m, #(List(#(Kontinue(m), m)), Env(m))))
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
-
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)), )
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
-
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, )
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
-
-
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), ), ), )
pub type Reason(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
-
-
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))), ), ), )
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)),
)