This doesn't really have much to do with the original post, but why not
just completely eliminate the problem and take a cue from Lisp by just
allowing functions to return multiple values?  yield could simply have
the same effect as values does in CL.