Avoid the pesky mistake:to ID(list) or not to ID(list)

So I was working on my OS.
But I couldn't get it to work.
After two and a half hours of unhappy debugging,I found the culprit:

This caused every data cell of the virtual ram to be the same data cell,which is certainly not what you want for a virtual ram.
We should use id of at every place we don't explicitly want to call by reference.

Yeah sort of. I see what you're saying, and it's close enough, but technically it's all call by value. It's just that the value is a list, which is a thing, you know, even though it's a structured thing. Call by reference would mean that if you use a variable as the actual argument, and there's an assignment to the formal parameter in the procedure, it'd change the value of the variable in the caller. Isn't that right?

oh right.