Abstract

State-smart words provide a number of unpleasant surprises to their users. They are applied in two contexts, and they fail in both: 1) for providing an arbitrary combination of interpretation and compilation semantics; 2) for optimizing with a special implementation of the (default) compilation semantics. This paper discusses these issues and shows programmers and system implementors how to avoid state-smart words. It also reports our experiences in converting the state-smart words in Gforth into a clean solution: little work and few problems.