@inproceedings { DidrichBSTT2000, author = "Klaus Didrich and Wolfgang Grieskamp and Florian Schintke and Till Tantau and Baltasar Tranc{\'o}n-y-Widemann", title = "Reflections in Opal -- Meta Information in a Functional Programming Language", abstract = "We report on an extension of the Opal system that allows the use of \emph{reflections}. Using reflections, a programmer can query information like the type of an object at runtime. The type can in turn be queried for properties like the constructor and deconstructor functions, and the resulting reflected functions can be evaluated. These facilities can be used for generic meta-programming. We describe the reflection interface of Opal and its applications, and sketch the implementation. For an existing language implementation like Opal's the extension by a reflection facility is challenging: in a statically typed language the management of \emph{runtime type information} seems to be an alien objective. However, it turns out that runtime type information can be incorporated in an elegant way by a source-level transformation and an appropriate set of library modules. We show how this transformation can be done without changing the Opal core system and causing runtime overhead only where reflections are actually used.", booktitle = "Proceedings of the 11th International Workshop on Implementation of Functional Languages, Lochem, The Netherlands, September 1999, (IFL'99), Selected Papers", editor = "P. Koopman and C. Clack", pages = "149--164", series = "Lecture Notes on Computer Science", volume = "1868", publisher = "Springer", year = "2000" }