diff --git a/tvix/eval/src/builtins/mod.rs b/tvix/eval/src/builtins/mod.rs index 073edf8ff..ecd19213c 100644 --- a/tvix/eval/src/builtins/mod.rs +++ b/tvix/eval/src/builtins/mod.rs @@ -277,7 +277,7 @@ fn pure_builtins() -> Vec { let mut res = args.pop().unwrap(); let op = args.pop().unwrap(); for val in list { - res = vm.call_with(&op, [val, res])?; + res = vm.call_with(&op, [res, val])?; res.force(vm)?; } diff --git a/tvix/eval/src/vm.rs b/tvix/eval/src/vm.rs index 4d049c6d7..08c913ed2 100644 --- a/tvix/eval/src/vm.rs +++ b/tvix/eval/src/vm.rs @@ -265,9 +265,10 @@ impl<'o> VM<'o> { pub fn call_with(&mut self, callable: &Value, args: I) -> EvalResult where I: IntoIterator, + I::IntoIter: DoubleEndedIterator, { let mut num_args = 0_usize; - for arg in args { + for arg in args.into_iter().rev() { num_args += 1; self.push(arg); }