Abstract
One of the most important things, it seems to me, in extending a language, is somehow to have the extension smooth with respect to the base. Smoothness is an aesthetic requirement, and I can't be too precise about it; but it is also a very strong requirement, and one that is very hard to live up to when you actually come down to try to write an extension. For example, in extending a language by introducing a new data type, one should allow that new data type to appear in all contexts of the language or as many as possible. Not only in expressions, which we seem to know how to do, but also in places like input/output. If the language has parametric data types (for example, declarable precisions) and has corresponding polymorphic operators defined over all of them, then extension should likewise have comparable capabilities for parameterization and polymorphism. This is not possible in Algol 68, for instance. (I will make frequent reference to Algol 68 in this talk for the reason that Algol 68 is defined and available, has been thought about very carefully, and therefore, is much easier to shoot at since it is a reasonably stable target.)
Index Terms
- Alternatives to extensible languages
Recommendations
Introduction to extensible languages
It has been such a long time since I have seen so many familiar faces shouting among so many familiar ideas. Discovery of something new in programming languages, like any discovery, has somewhat the same sequence of emotions as falling in love. A sharp ...
A framework for extensible languages
GPCE '13Extensible programming languages such as SugarJ or Racket enable programmers to introduce customary language features as extensions of the base language. Traditionally, systems that support language extensions are either (i) agnostic to the base ...
A framework for extensible languages
GPCE '13: Proceedings of the 12th international conference on Generative programming: concepts & experiencesExtensible programming languages such as SugarJ or Racket enable programmers to introduce customary language features as extensions of the base language. Traditionally, systems that support language extensions are either (i) agnostic to the base ...
Comments