My Forth code is full of @ and ! and I keep forgetting one, for example writing LIMIT 1 + when LIMIT is a variable and getting an address plus one. I have now seen VALUE with TO, and Gforth also supports local variables inside a definition.
What are the practical differences between VARIABLE, VALUE, CONSTANT and locals, and when is each the right choice? I would also like to understand how TO manages to store into a value when the value's name normally returns its contents.




