×

zbMATH — the first resource for mathematics

A type system for reflective program generators. (English) Zbl 1215.68062
Summary: We describe a type system for a generative mechanism that generalizes the concept of generic types by combining it with a controlled form of reflection. This mechanism makes many code generation tasks possible for which generic types alone would be insufficient. The power of code generation features are carefully balanced with their safety, which enables us to perform static type checks on generator code. This leads to a generalized notion of type safety for generators.

MSC:
68N19 Other programming paradigms (object-oriented, sequential, concurrent, automatic, etc.)
68N30 Mathematical aspects of software engineering (specification, verification, metrics, requirements, etc.)
PDF BibTeX Cite
Full Text: DOI
References:
[1] Aho, A.; Sethi, R.; Ullman, J.: Compiler: principles, techniques and tools, (1986)
[2] Attardi, G.; Cisternino, A.: Reflection support by means of template metaprogramming, Lncs 2186 (2001) · Zbl 1029.68647
[3] Attardi, G.; Cisternino, A.: Template metaprogramming an object interface to relational tables, Lncs 2192 (2001) · Zbl 1038.68625
[4] L. Augustsson, Cayenne–a language with dependent types, in: ICFP’98: Proceedings of the 3rd ACM SIGPLAN International Conference on Functional Programming, 1998, pp. 239–250. · Zbl 1369.68085
[5] G. Bracha, N. Cohen, C. Kemper, S. Marx, M. Odersky, S.-E. Panitz, D. Stoutamire, K. Thorup, P. Wadler, Adding generics to the java programming language: participant draft specification, Tech. rep., SUN Microsystems, April 2001.
[6] Bracha, G.; Odersky, M.; Stoutamire, D.; Wadler, P.: Making the future safe for the past: adding genericity to the Java programming language, (1998)
[7] Calcagno, C.; Taha, W.; Huang, L.; Leroy, X.: Implementing multi-stage languages using asts, gensym, and reflection, Lecture notes in computer science 2830 (2003)
[8] Cardelli, L.: Type systems, Handbook of computer science and engineering, 2208-2236 (1997)
[9] Chiba, S.: A metaobject protocol for C++, (1995)
[10] Czarnecki, K.; Eisenecker, U.: Generative programming - methods, tools, and applications, (2000)
[11] D. Draheim, C. Lutteroth, G. Weber, Factory: statically type-safe integration of genericity and reflection, in: Proceedings of the 4th International Conference on Software Engineering, Artificial Intelligence, Networking, and Parallel/Distributed Computing, ACIS, 2003.
[12] D. Draheim, C. Lutteroth, G. Weber, An analytical comparison of generative programming technologies, Tech. Rep. B-04-02, Institute of Computer Science, Freie Universität Berlin, January 2004. http://www.inf.fu-berlin.de/inst/pubs/tr-b-04-02.abstra.html.
[13] D. Draheim, C. Lutteroth, G. Weber, Generative Programming for C#, ACM SIGPLAN Not. 40 (8). · Zbl 1215.68062
[14] D. Draheim, C. Lutteroth, G. Weber, Integrating code generators into the C# language, in: Proceedings of ICITA 2005: The 3rd International Conference on Information Technology and Applications, IEEE Press, 2005. · Zbl 1215.68062
[15] Draheim, D.; Lutteroth, C.; Weber, G.: Robust content creation with form-oriented user interfaces, (2005)
[16] Draheim, D.; Weber, G.: Form-oriented analysis - A new methodology to model form-based applications, (2004) · Zbl 1058.68117
[17] Fähndrich, M.; Carbin, M.; Larus, J. R.: Reflective program generation with patterns, (2006)
[18] Frost, R. A.: Using memorization to achieve polynomial complexity of purely functional executable specifications of non-deterministic top-down parsers, SIGPLAN not. 29, No. 4, 23-30 (1994)
[19] Gabriel, R. G.; Bobrow, D. G.; White, J. L.: Object oriented programming–the CLOS perspective, (1993)
[20] Gamma, E.; Helm, R.; Johnson, R.; Vlissides, J.: Design patterns: elements of reusable object-oriented software, (1995) · Zbl 0887.68013
[21] Glück, R.; Jørgensen, J.: Multi-level specialization, Partial eval., 326-337 (1999)
[22] Hinze, R.; Jeuring, J.: Generic haskell: applications, Lncs 2793 (2003) · Zbl 1274.68050
[23] Hinze, R.; Jeuring, J.: Generic haskell: practice and theory, Lncs 2793 (2003) · Zbl 1274.68049
[24] S. Huang, D. Zook, Y. Smaragdakis, Statically safe program generation with SafeGen, in: GPCE’05: Proceedings of the 4th International Conference on Generative Programming and Component Engineering, 2005, pp. 309–326. · Zbl 1215.68054
[25] Huang, S. S.; Smaragdakis, Y.: Expressive and safe static reflection with morphj, (2008)
[26] Huang, S. S.; Zook, D.; Smaragdakis, Y.: Cj: enhancing Java with safe type conditions, (2007)
[27] M. Kay, XSL Transformations (XSLT) version 2.0, Candidate recommendation feedback, W3C, November 2005.
[28] G. Kiczales, An overview of AspectJ, in: ECOOP’01: Proceedings of the European Conference on Object-Oriented Programming, in: LNCS, vol. 2072, Budapest, Hungary, 2001. · Zbl 0982.68552
[29] Kiczales, G.; Rivières, J. Des: The art of the metaobject protocol, (1991)
[30] Kohlbecker, E.; Friedman, D. P.; Felleisen, M.; Duba, B.: Hygienic macro expansion, (1986)
[31] X. Leroy, D. Doligez, J. Garrigue, D. Rémy, J. Vouillon, The objective caml system release 3.08–documentation and user’s manual, Tech. Rep., Institut National de Recherche en Informatique et en Automatique, July 2004.
[32] Lutteroth, C.: AP1: A platform for model-based software engineering, (2006)
[33] B. McNamara, Y. Smaragdakis, Static interfaces in C++, in: Proceedings of the First Workshop on C++ Template Programming, NetObjectDays 2000, 2000.
[34] Michie, D.: Memo functions and machine learning, Nature 218, 19-22 (1968)
[35] Neverov, G.; Roe, P.: Metaphor: a multi-stage, object-oriented programming language, Lncs 3286 (2004) · Zbl 1100.68532
[36] Nizhegorodov, D.: Jasper: type-safe MOP-based language extensions and reflective template processing in Java, (2000)
[37] Nizhegorodov, D.: Code-generation aspects of jasper, a reflective meta-programming and source transformations processor, (2002)
[38] Norvig, P.: Techniques for automatic memoization with applications to context-free parsing, Comput. linguist. 17, No. 1, 91-98 (1991)
[39] Object Management Group, Meta Object Facility (MOF) 2.0 Query/View/Transformation Specification, November 2005.
[40] Object Management Group, MOF 2.0/XMI Mapping Specification Version 2.1, September 2005.
[41] Paige, R.; Koenig, S.: Finite differencing of computable expressions, ACM trans. Program. lang. Syst 4, No. 3, 402-454 (1982) · Zbl 0484.68009
[42] Pierce, B. C.: Types and programming languages, (2002) · Zbl 0995.68018
[43] Sheard, T.: Accomplishments and research challenges in meta-programming, (2001) · Zbl 1030.68536
[44] J. Siek, A. Lumsdaine, Concept checking: Binding parametric polymorphism in C++, in: Proceedings of the First Workshop on C++ Template Programming, NetObjectDays 2000, 2000.
[45] Smith, B. C.: Reflection and semantics in LISP, (1984)
[46] Smith, D. R.: A generative approach to aspect-oriented programming, Lncs 3286 (2004)
[47] D. Stemple, R. Stanton, T. Sheard, P. Philbrow, R. Morrison, G. Kirby, L. Fegaras, R. Cooper, R. Connor, M. Atkinson, et al. Type-safe linguistic reflection: a generator technology, ESPRIT BRA Project 3070.
[48] Taha, W.; Sheard, T.: Multi-stage programming with explicit annotations, (1997) · Zbl 0949.68047
[49] Taha, W.; Sheard, T.: Metaml and multi-stage programming with explicit annotations, Theoret. comput. Sci. 248, No. 1–2, 211-242 (2000) · Zbl 0949.68047
[50] Von Dincklage, D.: Making patterns explicit with metaprogramming, Lncs 2830 (2003)
[51] Zólyomi, I.; Porkoláb, Z.: Towards a general template introspection library, Lncs 3286 (2004)
This reference list is based on information provided by the publisher or from digital mathematics libraries. Its items are heuristically matched to zbMATH identifiers and may contain data conversion errors. It attempts to reflect the references listed in the original paper as accurately as possible without claiming the completeness or perfect precision of the matching.