Metalevel building blocks for modular systems
- 1 May 1994
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 16 (3), 456-492
- https://doi.org/10.1145/177492.177578
Abstract
The formal definition of any namespace device found in a programming language can be given in terms of transformations on a semantic environment. It is worthwhile, therefore, to consider the implications of incorporating environments as bona fide data objects in a programming system. In this article, we propose a treatment of environments and the mechanism by which they are reified and manipulated, that addresses these concerns. The language described below (Rascal) permits environments to be reified into data structures, and data structures to be reflected into environments, but gives users great flexibility to constrain the extent and scope of these processes. We argue that the techniques and operators developed define a cohesive basis for building large-scale modular systems using reflective programming techniques.Keywords
This publication has 18 references indexed in Scilit:
- Quasi-static scopingPublished by Association for Computing Machinery (ACM) ,1993
- Report on the programming language HaskellACM SIGPLAN Notices, 1992
- Revised 4 report on the algorithmic language schemeACM SIGPLAN Lisp Pointers, 1991
- Macros that workPublished by Association for Computing Machinery (ACM) ,1991
- Objects as closures: abstract semantics of object-oriented languagesPublished by Association for Computing Machinery (ACM) ,1988
- Self: The power of simplicityACM SIGPLAN Notices, 1987
- ORBIT: an optimizing compiler for schemeACM SIGPLAN Notices, 1986
- Using prototypical objects to implement shared behavior in object-oriented systemsACM SIGPLAN Notices, 1986
- Efficient implementation of the smalltalk-80 systemPublished by Association for Computing Machinery (ACM) ,1984
- Abstraction mechanisms in CLUCommunications of the ACM, 1977