Added another test program "tests/div_by_2_until.dao" similar to "tests/collatz1.dao" but was more helpful in tracking down a particular bug.
Made a few simple modifications to some of the test programs, which now do a better job of checking how local versus global variable assignment works.
Bug fix: updating local variables was not working as I expected because of two things. (1) The right-hand side of the update expression was not being dereferenced. (2) The instance of 'Dao.Interpreter.Store' 'Dao.Interpreter.LocalStore', which makes use of the instance of 'Dao.Interpreter.Store' (ref 'Dao.Stack.Stack'), was using 'Dao.Stack.stackUpdateTopM' instead of 'Dao.Stack.stackUpdateM' to update local variables. This had the effect of forcing the updated variable value to the top of the stack, which was deleted when the stack was popped. The 'Dao.Stack.stackUpdateM' function behaves correctly, and this is what is now used, and the bug has been fixed.
Bug fix: updating local variables was not working as I expected because of two things. (1) The right-hand side of the update expression was not being dereferenced. (2) The instance of 'Dao.Interpreter.Store' 'Dao.Interpreter.LocalStore', which makes use of the instance of 'Dao.Interpreter.Store' (ref 'Dao.Stack.Stack'), was using 'Dao.Stack.stackUpdateTopM' instead of 'Dao.Stack.stackUpdateM' to update local variables. This had the effect of forcing the updated variable value to the top of the stack, which was deleted when the stack was popped. The 'Dao.Stack.stackUpdateM' function behaves correctly, and this is what is now used, and the bug has been fixed.