implemented subtraction for built-in functios
This commit is contained in:
parent
d634692f12
commit
3338ec94c2
|
@ -635,7 +635,27 @@ impl ops::Sub for Value {
|
|||
)
|
||||
.into_functio(),
|
||||
},
|
||||
Functio::Builtin(_) => todo!(),
|
||||
Functio::Builtin(b) => {
|
||||
let arity = b.arity;
|
||||
let resulting_arity = arity.saturating_sub(rhs.into_i32() as usize);
|
||||
|
||||
Functio::Builtin(BuiltinFunctio::new(
|
||||
move |args| {
|
||||
b.call(
|
||||
&args
|
||||
.iter()
|
||||
.cloned()
|
||||
.take(resulting_arity)
|
||||
.chain(std::iter::repeat_with(|| {
|
||||
Rc::new(RefCell::new(Value::Nul))
|
||||
}))
|
||||
.take(arity)
|
||||
.collect::<Vec<_>>(),
|
||||
)
|
||||
},
|
||||
resulting_arity,
|
||||
))
|
||||
}
|
||||
Functio::Chain { functios, .. } => {
|
||||
let rhs = rhs.into_functio();
|
||||
let (a, b) = *functios;
|
||||
|
|
Loading…
Reference in a new issue