Type-Safe Linguistic Reflection: A Generator Technology

Reflective systems allow their own structures to be altered from within. In a programming system reflection can occur in two ways: by a program altering its own interpretation or by it changing itself. Reflection has been used to facilitate the production and evolution of data and programs in database and programming language systems. This paper is concerned with a particular style of reflection, called linguistic reflection, used in compiled, strongly typed languages. Two major techniques for this have evolved: compile-time reflection and run-time reflection. These techniques are described together with a definition and anatomy of reflective systems using them. Two illustrative examples are given and the uses of type-safe reflective techniques in a database programming language context are surveyed. These include attaining high levels of genericity, accommodating changes in systems, implementing data models, optimising implementations and validating specifications.

[1]  Quintin I. Cutts,et al.  Browsing, Grazing and Bibbling Persistent data Structures , 1989, POS.

[2]  Christopher Strachey,et al.  Fundamental Concepts in Programming Languages , 2000, High. Order Symb. Comput..

[3]  Alan Dearle,et al.  An Adaptive Graphical Browser for Napier88 , 1990 .

[4]  R. F. Bruynooghe,et al.  PSS: A System for Process Enactment , 1991, Proceedings. First International Conference on the Software Process,.

[5]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[6]  Alan Dearle,et al.  Safe Browsing in a Strongly Typed Persistent Environment , 1988, Comput. J..

[7]  Richard Cooper,et al.  Constructing Database Systems in a Persistent Environment , 1987, VLDB.

[8]  D. H. Bartley,et al.  Revised4 report on the algorithmic language scheme , 1991, LIPO.

[9]  E. F. Codd,et al.  Extending the database relational model to capture more meaning , 1979, ACM Trans. Database Syst..

[10]  Jonathan Rees,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[11]  Rod M. Burstall,et al.  Programming in POP-2 , 1971 .

[12]  Graham N. C. Kirby,et al.  Persistent programming with strongly typed linguistic reflection , 1992, Proceedings of the Twenty-Fifth Hawaii International Conference on System Sciences.

[13]  Richard Cooper,et al.  Configurable Data Modelling Systems , 1990, ER.

[14]  David W. Stemple,et al.  Linguistic reflection: a bridge from programming to database languages , 1992, Proceedings of the Twenty-Fifth Hawaii International Conference on System Sciences.

[15]  T G Muchnick,et al.  On some extensions of syntactic error recovery technique based on phrase markers , 1986, SIGP.

[16]  Hans-Jörg Schek,et al.  Remarks on the algebra of non first normal form relations , 1982, PODS.

[17]  Richard C. H. Connor,et al.  The Napier88 Reference Manual , 1997 .

[18]  David W. Stemple,et al.  Using type transformation in database system implementation , 1992 .

[19]  Tim Sheard,et al.  Automatic generation and use of abstract structure operators , 1991, TOPL.

[20]  Richard Cooper,et al.  A Graphical Data Modelling Program with Constraint Specification and Management , 1992, BNCOD.

[21]  R. M. Greenwood,et al.  The use of a persistent language in the implementation of a process support system , 1992 .

[22]  David W. Stemple,et al.  Automatic verification of database transaction safety , 1989, ACM Trans. Database Syst..

[23]  David Maier,et al.  Persistent Object Systems , 1995, Workshops in Computing.

[24]  David W. Stemple,et al.  Uniform Traversal Combinators: Definition, Use and Properties , 1992, CADE.

[25]  Ronald Cooper On the Utilisation of Persistent Programming Environments , 1989 .

[26]  David W. Stemple,et al.  Exceeding the Limits of Polymorphism in Database Programming Languages , 1990, EDBT.