fn return_val(&mut self) -> Result<(), Trace> {
        // the value to be returned
        let val = self.stack.pop_data();

        // clear all locals
        let locals = self.next_number();
        for _ in 0..locals {
            self.del()?;
        }

        // restore suspended callee
        let suspend = self.stack.pop_frame(); // remove the frame
        self.ip = suspend.ip;
        self.closure = suspend.closure;

        // push return value
        self.stack.push_data(val); // push the return value
        Ok(())
    }
Return a value from a function.
End the execution of the current lambda.
Takes the number of locals on the stack
Relpaces the last frame with the value on the top of the stack.
Expects the stack to be a `[..., Frame, Local 1, ..., Local N, Data]`
passerine/src/vm/fiber.rs