feat(tvix/eval): introduce mechanism for defining builtins
Adds a new builtins module in which builtins can be constructed. The functions in this module should return a correctly structured value to be passed to the compiler's `globals`. This is wired up all the way to the compiler with an example `toString` builtin, available as a global. Note that this does not yet actually behave like the real toString, which has some differences from `Display`. Change-Id: Ibb5f6fbe6207782fdf2434435567fc1bd80039a5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6254 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
parent
ca90c0f45a
commit
e1147b57c7
5 changed files with 48 additions and 6 deletions
|
|
@ -34,6 +34,19 @@ pub struct Builtin {
|
|||
}
|
||||
|
||||
impl Builtin {
|
||||
pub fn new(name: &'static str, arity: usize, func: BuiltinFn) -> Self {
|
||||
Builtin {
|
||||
name,
|
||||
arity,
|
||||
func,
|
||||
partials: vec![],
|
||||
}
|
||||
}
|
||||
|
||||
pub fn name(&self) -> &'static str {
|
||||
self.name
|
||||
}
|
||||
|
||||
/// Apply an additional argument to the builtin, which will either
|
||||
/// lead to execution of the function or to returning a partial
|
||||
/// builtin.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue