IMO this looks like a minimalised reproducer for a problem encountered in practice.
If you are going to reify variables, I would propose boxes instead, which simply hold a single value and hence are have very straightforward semantics and are very close to the semantics of variables. Parameters have more involved semantics (reading and setting depends on the dynamic environment, see e.g. ‘parameterize’, also see the bit about conversion functions or whatever they are called), which might or might not be desired, depending on what you are doing. (With the provided code, it is hard to tell). Best regards, Maxime Devos