This allows for looking at the state of the interpreter, or changing it in a hook. I;'m not sure if we really want to be changing the state in a callback though. So maybe this should be an immutable reference.
in this case I think "more power to the user" is a good thing, mutable gets my vote. making it mutable could let you do neat stuff like extending the language, or making polymorphic programs.
This allows for looking at the state of the interpreter, or changing it in a hook. I;'m not sure if we really want to be changing the state in a callback though. So maybe this should be an immutable reference.