This paper is concerned with simulation of language concepts and mechanisms. I find it interesting to compare simulation with the more traditional language implementation techniques, compilation and interpretation. As a matter of terminology, I talk about a source language and a implementation language (their roles will be described in each of the cases below). I look at the qualities of the three language implementation techniques in the following way:
Implementation of a language---or some aspects of a language---via simulation is mainly useful in experimental situations. Using simulation, one is not limited within the concepts and mechanisms of a single and already frozen language. Rather it is possible to gain experience by selecting concepts and mechanism from a ``spectrum'' of variations, which the implementation language makes attractive.
The simulation approach is also interesting when one wants to explore ``the inherent power'' of an implementation language. In this context, ``power'' means the ability to express foreign concepts or mechanisms in simple and elegant ways using existing means of the implementation language.
As mentioned above, the identity of the source language tends to be weak when using the simulation approach. It is the disciplined application of certain ``patterns'' that makes it possible at all to talk about a source language. If the identity of the source language patterns becomes too weak, one may decide to amplify the identity via the use of syntactic abstractions over the patterns of the simulation. In the Lisp world, such abstractions can be defined via macros. In this report I do not use syntactic abstraction beyond procedure definitions.