{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2022,4,2]],"date-time":"2022-04-02T16:01:27Z","timestamp":1648915287347},"reference-count":51,"publisher":"Elsevier BV","issue":"5","license":[{"start":{"date-parts":[[2011,5,1]],"date-time":"2011-05-01T00:00:00Z","timestamp":1304208000000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.elsevier.com\/tdm\/userlicense\/1.0\/"},{"start":{"date-parts":[[2015,5,1]],"date-time":"2015-05-01T00:00:00Z","timestamp":1430438400000},"content-version":"vor","delay-in-days":1461,"URL":"https:\/\/www.elsevier.com\/open-access\/userlicense\/1.0\/"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Science of Computer Programming"],"published-print":{"date-parts":[[2011,5]]},"DOI":"10.1016\/j.scico.2010.12.002","type":"journal-article","created":{"date-parts":[[2011,1,4]],"date-time":"2011-01-04T09:10:41Z","timestamp":1294132241000},"page":"392-422","source":"Crossref","is-referenced-by-count":3,"title":["A type system for reflective program generators"],"prefix":"10.1016","volume":"76","author":[{"given":"Christof","family":"Lutteroth","sequence":"first","affiliation":[]},{"given":"Dirk","family":"Draheim","sequence":"additional","affiliation":[]},{"given":"Gerald","family":"Weber","sequence":"additional","affiliation":[]}],"member":"78","reference":[{"key":"10.1016\/j.scico.2010.12.002_br000005","series-title":"Compiler: Principles, Techniques and Tools","author":"Aho","year":"1986"},{"key":"10.1016\/j.scico.2010.12.002_br000010","series-title":"GCSE \u201901: Proceedings of the 3rd International Conference on Generative and Component-Based Software Engineering","article-title":"Reflection support by means of template metaprogramming","volume":"vol. 2186","author":"Attardi","year":"2001"},{"key":"10.1016\/j.scico.2010.12.002_br000015","series-title":"REFLECTION \u201901: Proceedings of the 3rd International Conference on Metalevel Architectures and Separation of Crosscutting Concerns","article-title":"Template metaprogramming an object interface to relational tables","volume":"vol. 2192","author":"Attardi","year":"2001"},{"key":"10.1016\/j.scico.2010.12.002_br000020","doi-asserted-by":"crossref","unstructured":"L. Augustsson, Cayenne\u2014a language with dependent types, in: ICFP\u201998: Proceedings of the 3rd ACM SIGPLAN International Conference on Functional Programming, 1998, pp. 239\u2013250.","DOI":"10.1145\/289423.289451"},{"key":"10.1016\/j.scico.2010.12.002_br000025","unstructured":"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."},{"key":"10.1016\/j.scico.2010.12.002_br000030","series-title":"OOPSLA\u201998: Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, SIGPLAN Notices","article-title":"Making the future safe for the past: adding genericity to the Java programming language","author":"Bracha","year":"1998"},{"key":"10.1016\/j.scico.2010.12.002_br000035","series-title":"GPCE","article-title":"Implementing multi-stage languages using asts, gensym, and reflection","volume":"vol. 2830","author":"Calcagno","year":"2003"},{"key":"10.1016\/j.scico.2010.12.002_br000040","series-title":"Handbook of Computer Science and Engineering","first-page":"2208","article-title":"Type Systems","author":"Cardelli","year":"1997"},{"key":"10.1016\/j.scico.2010.12.002_br000045","series-title":"OOPSLA\u201995: Proceedings of the 10th Conference on Object-Oriented Programming Systems, Languages, and Applications","article-title":"A metaobject protocol for C++","author":"Chiba","year":"1995"},{"key":"10.1016\/j.scico.2010.12.002_br000050","series-title":"Generative Programming - Methods, Tools, and Applications","author":"Czarnecki","year":"2000"},{"key":"10.1016\/j.scico.2010.12.002_br000055","unstructured":"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."},{"key":"10.1016\/j.scico.2010.12.002_br000060","unstructured":"D. Draheim, C. Lutteroth, G. Weber, An analytical comparison of generative programming technologies, Tech. Rep. B-04-02, Institute of Computer Science, Freie Universit\u00e4t Berlin, January 2004. http:\/\/www.inf.fu-berlin.de\/inst\/pubs\/tr-b-04-02.abstra.html."},{"key":"10.1016\/j.scico.2010.12.002_br000065","doi-asserted-by":"crossref","unstructured":"D. Draheim, C. Lutteroth, G. Weber, Generative Programming for C#, ACM SIGPLAN Not. 40 (8).","DOI":"10.1145\/1089851.1089857"},{"key":"10.1016\/j.scico.2010.12.002_br000070","unstructured":"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."},{"key":"10.1016\/j.scico.2010.12.002_br000075","series-title":"Proceedings of CHINZ 2005\u20146th International Conference of the ACM\u2019s Special Interest Group on Computer\u2013Human Interaction","article-title":"Robust content creation with form-oriented user interfaces","author":"Draheim","year":"2005"},{"key":"10.1016\/j.scico.2010.12.002_br000080","series-title":"Form-Oriented Analysis - A New Methodology to Model Form-Based Applications","author":"Draheim","year":"2004"},{"key":"10.1016\/j.scico.2010.12.002_br000085","series-title":"GPCE\u201906: Proceedings of the 5th International Conference on Generative Programming and Component Engineering","article-title":"Reflective program generation with patterns","author":"F\u00e4hndrich","year":"2006"},{"issue":"4","key":"10.1016\/j.scico.2010.12.002_br000090","doi-asserted-by":"crossref","first-page":"23","DOI":"10.1145\/181761.181764","article-title":"Using memorization to achieve polynomial complexity of purely functional executable specifications of non-deterministic top-down parsers","volume":"29","author":"Frost","year":"1994","journal-title":"SIGPLAN Not."},{"key":"10.1016\/j.scico.2010.12.002_br000095","series-title":"Object Oriented Programming\u2014The CLOS Perspective","author":"Gabriel","year":"1993"},{"key":"10.1016\/j.scico.2010.12.002_br000100","series-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma","year":"1995"},{"key":"10.1016\/j.scico.2010.12.002_br000105","doi-asserted-by":"crossref","first-page":"326","DOI":"10.1007\/3-540-47018-2_13","article-title":"Multi-level specialization","author":"Gl\u00fcck","year":"1999","journal-title":"Partial Eval."},{"key":"10.1016\/j.scico.2010.12.002_br000110","series-title":"Generic Programming: Advanced Lectures","article-title":"Generic Haskell: applications","volume":"vol. 2793","author":"Hinze","year":"2003"},{"key":"10.1016\/j.scico.2010.12.002_br000115","series-title":"Generic Programming: Advanced Lectures","article-title":"Generic Haskell: practice and theory","volume":"vol. 2793","author":"Hinze","year":"2003"},{"key":"10.1016\/j.scico.2010.12.002_br000120","doi-asserted-by":"crossref","unstructured":"S. Huang, D. Zook, Y. Smaragdakis, Statically safe program generation with SafeGen, in: GPCE\u201905: Proceedings of the 4th International Conference on Generative Programming and Component Engineering, 2005, pp. 309\u2013326.","DOI":"10.1007\/11561347_21"},{"key":"10.1016\/j.scico.2010.12.002_br000125","series-title":"PLDI\u201908: Proceedings of the 2008 ACM SIGPLAN Conference on Programming Language Design and Implementation","article-title":"Expressive and safe static reflection with morphj","author":"Huang","year":"2008"},{"key":"10.1016\/j.scico.2010.12.002_br000130","series-title":"AOSD\u201907: Proceedings of the 6th International Conference on Aspect-oriented Software Development","article-title":"cj: enhancing java with safe type conditions","author":"Huang","year":"2007"},{"key":"10.1016\/j.scico.2010.12.002_br000135","unstructured":"M. Kay, XSL Transformations (XSLT) version 2.0, Candidate recommendation feedback, W3C, November 2005."},{"key":"10.1016\/j.scico.2010.12.002_br000140","unstructured":"G. Kiczales, An overview of AspectJ, in: ECOOP\u201901: Proceedings of the European Conference on Object-Oriented Programming, in: LNCS, vol. 2072, Budapest, Hungary, 2001."},{"key":"10.1016\/j.scico.2010.12.002_br000145","series-title":"The Art of the Metaobject Protocol","author":"Kiczales","year":"1991"},{"key":"10.1016\/j.scico.2010.12.002_br000150","series-title":"LFP\u201986: Proceedings of the 1986 ACM Conference on LISP and Functional Programming","article-title":"Hygienic macro expansion","author":"Kohlbecker","year":"1986"},{"key":"10.1016\/j.scico.2010.12.002_br000155","unstructured":"X. Leroy, D. Doligez, J. Garrigue, D. R\u00e9my, J. Vouillon, The objective caml system release 3.08\u2014documentation and user\u2019s manual, Tech. Rep., Institut National de Recherche en Informatique et en Automatique, July 2004."},{"key":"10.1016\/j.scico.2010.12.002_br000160","series-title":"TEAA\u201906: Proceedings of the 2nd International Conference on Trends in Enterprise Application Architecture","article-title":"AP1: A platform for model-based software engineering","author":"Lutteroth","year":"2006"},{"key":"10.1016\/j.scico.2010.12.002_br000165","unstructured":"B. McNamara, Y. Smaragdakis, Static interfaces in C++, in: Proceedings of the First Workshop on C++ Template Programming, NetObjectDays 2000, 2000."},{"key":"10.1016\/j.scico.2010.12.002_br000170","doi-asserted-by":"crossref","first-page":"19","DOI":"10.1038\/218019a0","article-title":"Memo functions and machine learning","volume":"218","author":"Michie","year":"1968","journal-title":"Nature"},{"key":"10.1016\/j.scico.2010.12.002_br000175","series-title":"GPCE\u201904: Proceedings of the 3rd International Conference on Generative Programming and Component Engineering","article-title":"Metaphor: a multi-stage, object-oriented programming language","volume":"vol. 3286","author":"Neverov","year":"2004"},{"key":"10.1016\/j.scico.2010.12.002_br000180","series-title":"Proceedings of the ECOOP\u20192000 Workshop on Reflection and Metalevel Architectures: State of the Art, and Future Trends","article-title":"Jasper: type-safe MOP-based language extensions and reflective template processing in java","author":"Nizhegorodov","year":"2000"},{"key":"10.1016\/j.scico.2010.12.002_br000185","series-title":"Proceedings of the ECOOP\u201902 Workshop on Generative Programming","article-title":"Code-generation aspects of Jasper, a reflective meta-programming and source transformations processor","author":"Nizhegorodov","year":"2002"},{"issue":"1","key":"10.1016\/j.scico.2010.12.002_br000190","first-page":"91","article-title":"Techniques for automatic memoization with applications to context-free parsing","volume":"17","author":"Norvig","year":"1991","journal-title":"Comput. Linguist."},{"key":"10.1016\/j.scico.2010.12.002_br000195","unstructured":"Object Management Group, Meta Object Facility (MOF) 2.0 Query\/View\/Transformation Specification, November 2005."},{"key":"10.1016\/j.scico.2010.12.002_br000200","unstructured":"Object Management Group, MOF 2.0\/XMI Mapping Specification Version 2.1, September 2005."},{"issue":"3","key":"10.1016\/j.scico.2010.12.002_br000205","doi-asserted-by":"crossref","first-page":"402","DOI":"10.1145\/357172.357177","article-title":"Finite Differencing of Computable Expressions","volume":"4","author":"Paige","year":"1982","journal-title":"ACM Trans. Program. Lang. Syst"},{"key":"10.1016\/j.scico.2010.12.002_br000210","series-title":"Types and Programming Languages","author":"Pierce","year":"2002"},{"key":"10.1016\/j.scico.2010.12.002_br000215","series-title":"SAIG\u201901: Proceedings of the 2nd International Conference on Semantics, Applications, and Implementation of Program Generation","article-title":"Accomplishments and research challenges in meta-programming","author":"Sheard","year":"2001"},{"key":"10.1016\/j.scico.2010.12.002_br000220","unstructured":"J. Siek, A. Lumsdaine, Concept checking: Binding parametric polymorphism in C++, in: Proceedings of the First Workshop on C++ Template Programming, NetObjectDays 2000, 2000."},{"key":"10.1016\/j.scico.2010.12.002_br000225","series-title":"POPL\u201984: Proceedings of the 11th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages","article-title":"Reflection and semantics in LISP","author":"Smith","year":"1984"},{"key":"10.1016\/j.scico.2010.12.002_br000230","series-title":"GPCE\u201904: Proceedings of the 3rd International Conference on Generative Programming and Component Engineering","article-title":"A generative approach to aspect-oriented programming","volume":"vol. 3286","author":"Smith","year":"2004"},{"key":"10.1016\/j.scico.2010.12.002_br000235","unstructured":"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."},{"key":"10.1016\/j.scico.2010.12.002_br000240","series-title":"PEPM\u201997: Partial Evaluation and Semantics-Based Program Manipulation, SIPLAN Notices","article-title":"Multi-stage programming with explicit annotations","author":"Taha","year":"1997"},{"issue":"1\u20132","key":"10.1016\/j.scico.2010.12.002_br000245","doi-asserted-by":"crossref","first-page":"211","DOI":"10.1016\/S0304-3975(00)00053-0","article-title":"MetaML and multi-stage programming with explicit annotations","volume":"248","author":"Taha","year":"2000","journal-title":"Theoret. Comput. Sci."},{"key":"10.1016\/j.scico.2010.12.002_br000250","series-title":"GPCE\u201903: Proceedings of the 2nd International Conference Generative Programming and Component Engineering","article-title":"Making patterns explicit with metaprogramming","volume":"vol. 2830","author":"von Dincklage","year":"2003"},{"key":"10.1016\/j.scico.2010.12.002_br000255","series-title":"GPCE\u201904: Proceedings of the 3rd International Conference on Generative Programming and Component Engineering","article-title":"Towards a general template introspection library","volume":"vol. 3286","author":"Z\u00f3lyomi","year":"2004"}],"container-title":["Science of Computer Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.elsevier.com\/content\/article\/PII:S016764231000225X?httpAccept=text\/xml","content-type":"text\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/api.elsevier.com\/content\/article\/PII:S016764231000225X?httpAccept=text\/plain","content-type":"text\/plain","content-version":"vor","intended-application":"text-mining"}],"deposited":{"date-parts":[[2019,6,7]],"date-time":"2019-06-07T14:50:07Z","timestamp":1559919007000},"score":1,"resource":{"primary":{"URL":"https:\/\/linkinghub.elsevier.com\/retrieve\/pii\/S016764231000225X"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011,5]]},"references-count":51,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2011,5]]}},"alternative-id":["S016764231000225X"],"URL":"https:\/\/doi.org\/10.1016\/j.scico.2010.12.002","relation":{},"ISSN":["0167-6423"],"issn-type":[{"value":"0167-6423","type":"print"}],"subject":[],"published":{"date-parts":[[2011,5]]}}}