  In this paper, we are interested in memoryless computation, a modern paradigm
to compute functions which generalises the famous XOR swap algorithm to
exchange the contents of two variables without using a buffer. This uses a
combinatorial framework for procedural programming languages, where programs
are only allowed to update one variable at a time. We first consider programs
which do not have any memory. We prove that any function of $n$ variables can
be computed this way in only $4n-3$ variable updates. We then derive the exact
number of instructions required to compute any manipulation of variables. This
shows that combining variables, instead of simply moving them around, not only
allows for memoryless programs, but also yields shorter programs. Second, we
show that allowing programs to use memory is also incorporated in the
memoryless computation framework. We then quantify the gains obtained by using
memory: this leads to shorter programs and allows us to use only binary
instructions, which is not sufficient in general when no memory is used.
