For now it's enough to fold vectors before exit. Multi-pass currently isn't possible, as vectors need to be memory-backed. Solving the return problem and memory-backing seems to be the same thing. Milti-pass is essentially running siso-like operations on a vector, but with the possibility of recovery the end state. Compilation monad can take care of temporary space.