This interpreter still uses hashtables and strings everywhere, but at least it avoids searching string-keyed hashtables when you do things like + and *.
+
*