{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,11]],"date-time":"2026-04-11T02:14:56Z","timestamp":1775873696592,"version":"3.50.1"},"publisher-location":"Berlin, Heidelberg","reference-count":50,"publisher":"Springer Berlin Heidelberg","isbn-type":[{"value":"9783540201021","type":"print"},{"value":"9783540398158","type":"electronic"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2003]]},"DOI":"10.1007\/978-3-540-39815-8_4","type":"book-chapter","created":{"date-parts":[[2011,1,7]],"date-time":"2011-01-07T14:49:51Z","timestamp":1294411791000},"page":"57-76","source":"Crossref","is-referenced-by-count":49,"title":["Implementing Multi-stage Languages Using ASTs, Gensym, and Reflection"],"prefix":"10.1007","author":[{"given":"Cristiano","family":"Calcagno","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Walid","family":"Taha","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Liwen","family":"Huang","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Xavier","family":"Leroy","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","reference":[{"key":"4_CR1","unstructured":"Bawden, A.: Quasiquotation in LISP. In: Danvy, O. (ed.) Proceedings of the Workshop on Partial Evaluation and Semantics-Based Program Manipulation, San Antonio, pp. 88\u201399. University of Aarhus, Dept. of Computer Science (1999) (invited talk)"},{"key":"4_CR2","unstructured":"Benaissa, Z.E.-A., Moggi, E., Taha, W., Sheard, T.: Logical modalities and multi-stage programming. In: Federated Logic Conference (FLoC) Satellite Workshop on Intuitionistic Modal Logics and Applications (IMLA) (1999)"},{"key":"4_CR3","unstructured":"Calcagno, C., Moggi, E.: Adequacy and correctness for two-level languages (1998) (unpublished manuscript)"},{"key":"4_CR4","doi-asserted-by":"crossref","unstructured":"Calcagno, C., Moggi, E.: Multi-stage imperative languages: A conservative extension result. In: [41], pp. 92\u2013107 (2000)","DOI":"10.1007\/3-540-45350-4_9"},{"key":"4_CR5","doi-asserted-by":"crossref","unstructured":"Calcagno, C., Moggi, E., Sheard, T.: Closed types for a safe imperative MetaML. Journal of Functional Programming (2003) (to appear)","DOI":"10.1017\/S0956796802004598"},{"key":"4_CR6","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"25","DOI":"10.1007\/3-540-45022-X_4","volume-title":"Automata, Languages and Programming","author":"C. Calcagno","year":"2000","unstructured":"Calcagno, C., Moggi, E., Taha, W.: Closed types as a simple approach to safe imperative multi-stage programming. In: Welzl, E., Montanari, U., Rolim, J.D.P. (eds.) ICALP 2000. LNCS, vol.\u00a01853, pp. 25\u201336. Springer, Heidelberg (2000)"},{"key":"4_CR7","first-page":"155","volume-title":"Proceedings of the ACM Symposium on Principles of Programming Languages (POPL)","author":"W. Clinger","year":"1991","unstructured":"Clinger, W., Rees, J.: Macros that work. In: Proceedings of the ACM Symposium on Principles of Programming Languages (POPL), Orlando, pp. 155\u2013162. ACM Press, New York (1991)"},{"key":"4_CR8","doi-asserted-by":"crossref","unstructured":"Consel, C., No\u00ebl, F.: A general approach for run-time specialization and its application to C. In. In: Proceedings of the ACM Symposium on Principles of Programming Languages (POPL), St. Petersburg Beach, pp. 145\u2013156 (1996)","DOI":"10.1145\/237721.237767"},{"key":"4_CR9","first-page":"44","volume-title":"Proceedings of the Symposium on Partial Evaluation and Semantics-Based Program Manipulation","author":"C. Consel","year":"1993","unstructured":"Consel, C., Pu, C., Walpole, J.: Incremental specialization: The key to high performance, modularity, and portability in operating systems. In: Proceedings of the Symposium on Partial Evaluation and Semantics-Based Program Manipulation, New York, pp. 44\u201346. ACM Press, New York (1993)"},{"key":"4_CR10","doi-asserted-by":"publisher","first-page":"327","DOI":"10.1145\/62678.62725","volume-title":"Proceedings of the 1988 ACM Conference on LISP and Functional Programming","author":"O. Danvy","year":"1988","unstructured":"Danvy, O., Malmkj\u00e6r, K.: Intensions and extensions in a reflective tower. In: Proceedings of the 1988 ACM Conference on LISP and Functional Programming, pp. 327\u2013341. ACM Press, New York (1988)"},{"key":"4_CR11","first-page":"184","volume-title":"The Symposium on Logic in Computer Science (LICS 1996)","author":"R. Davies","year":"1996","unstructured":"Davies, R.: A temporal-logic approach to binding-time analysis. In: The Symposium on Logic in Computer Science (LICS 1996), New Brunswick, pp. 184\u2013195. IEEE Computer Society Press, Los Alamitos (1996)"},{"key":"4_CR12","doi-asserted-by":"crossref","unstructured":"Davies, R., Pfenning, F.: A modal analysis of staged computation. In: The Symposium on Principles of Programming Languages (POPL 1996), St. Petersburg Beach, pp. 258\u2013270 (1996)","DOI":"10.1145\/237721.237788"},{"issue":"4","key":"4_CR13","doi-asserted-by":"publisher","first-page":"295","DOI":"10.1007\/BF01806308","volume":"5","author":"R.K. Dybvig","year":"1992","unstructured":"Dybvig, R.K., Hieb, R., Bruggeman, C.: Syntactic abstraction in Scheme. Lisp and Symbolic Computation\u00a05(4), 295\u2013326 (1992)","journal-title":"Lisp and Symbolic Computation"},{"key":"4_CR14","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"378","DOI":"10.1007\/10704567_23","volume-title":"Principles and Practice of Declarative Programming","author":"A. Filinski","year":"1999","unstructured":"Filinski, A.: A semantic account of type-directed partial evaluation. In: Nadathur, G. (ed.) PPDP 1999. LNCS, vol.\u00a01702, pp. 378\u2013395. Springer, Heidelberg (1999)"},{"key":"4_CR15","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"151","DOI":"10.1007\/3-540-45413-6_15","volume-title":"Typed Lambda Calculi and Applications","author":"A. Filinski","year":"2001","unstructured":"Filinski, A.: Normalization by evaluation for the computational lambda-calculus. In: Abramsky, S. (ed.) TLCA 2001. LNCS, vol.\u00a02044, pp. 151\u2013165. Springer, Heidelberg (2001)"},{"key":"4_CR16","volume-title":"The International Conference on Functional Programming (ICFP 2001)","author":"S. Ganz","year":"2001","unstructured":"Ganz, S., Sabry, A., Taha, W.: Macros as multi-stage computations: Typesafe, generative, binding macros in MacroML. In: The International Conference on Functional Programming (ICFP 2001), Florence, Italy. ACM, New York (2001)"},{"key":"4_CR17","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"259","DOI":"10.1007\/BFb0026825","volume-title":"Programming Languages: Implementations, Logics and Programs","author":"R. Gl\u00fcck","year":"1995","unstructured":"Gl\u00fcck, R., J\u00f8rgensen, J.: Efficient multi-level generating extensions for program specialization. In: Swierstra, S.D., Hermenegildo, M. (eds.) PLILP 1995. LNCS, vol.\u00a0982, pp. 259\u2013278. Springer, Heidelberg (1995)"},{"key":"4_CR18","series-title":"LNCS","doi-asserted-by":"crossref","first-page":"261","DOI":"10.1007\/3-540-62064-8_22","volume-title":"Perspectives of System Informatics","author":"R. Gl\u00fcck","year":"1996","unstructured":"Gl\u00fcck, R., J\u00f8rgensen, J.: Fast binding-time analysis for multi-level specialization. In: Bjorner, D., Broy, M., Pottosin, I.V. (eds.) PSI 1996. LNCS, vol.\u00a01181, pp. 261\u2013272. Springer, Heidelberg (1996)"},{"key":"4_CR19","first-page":"137","volume-title":"System Modelling and Optimization","author":"R. Gl\u00fcck","year":"1995","unstructured":"Gl\u00fcck, R., Nakashige, R., Z\u00f6chling, R.: Binding-time analysis applied to mathematical algorithms. In: Dole\u017eal, J., Fidler, J. (eds.) System Modelling and Optimization, pp. 137\u2013146. Chapman & Hall, Boca Raton (1995)"},{"issue":"1","key":"4_CR20","doi-asserted-by":"publisher","first-page":"21","DOI":"10.1017\/S0956796800000058","volume":"1","author":"C.K. Gomard","year":"1991","unstructured":"Gomard, C.K., Jones, N.D.: A partial evaluator for untyped lambda calculus. Journal of Functional Programming\u00a01(1), 21\u201369 (1991)","journal-title":"Journal of Functional Programming"},{"issue":"4","key":"4_CR21","doi-asserted-by":"publisher","first-page":"337","DOI":"10.1023\/A:1010039502678","volume":"12","author":"L. Hornof","year":"1999","unstructured":"Hornof, L., Jim, T.: Certifying compilation and run-time code generation. Higher-Order and Symbolic Computation\u00a012(4), 337\u2013375 (1999)","journal-title":"Higher-Order and Symbolic Computation"},{"key":"4_CR22","volume-title":"Partial Evaluation and Automatic Program Generation","author":"N.D. Jones","year":"1993","unstructured":"Jones, N.D., Gomard, C.K., Sestoft, P.: Partial Evaluation and Automatic Program Generation. Prentice-Hall, Englewood Cliffs (1993)"},{"key":"4_CR23","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"crossref","first-page":"124","DOI":"10.1007\/3-540-15976-2_6","volume-title":"Rewriting Techniques and Applications","author":"N.D. Jones","year":"1985","unstructured":"Jones, N.D., Sestoft, P., Sondergraard, H.: An experiment in partial evaluation: The generation of a compiler generator. In: Jouannaud, J.-P. (ed.) RTA 1985. LNCS, vol.\u00a0202, pp. 124\u2013140. Springer, Heidelberg (1985)"},{"key":"4_CR24","unstructured":"Keppel, D., Eggers, S.J., Henry, R.R.: A case for runtime code generation. Tech. Rep. 91-11-04, University of Washington (1991)"},{"key":"4_CR25","unstructured":"Kolhlbecker, E.E.: Syntactic Extensions in the Programming Language Lisp. PhD thesis, Indiana University, Bloomington, Indiana (1986)"},{"key":"4_CR26","unstructured":"Leroy, X.: Objective Caml (2000), Available from http:\/\/caml.inria.fr\/ocaml\/"},{"key":"4_CR27","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"229","DOI":"10.1007\/BFb0040260","volume-title":"Mathematical Foundations of Programming Semantics","author":"K. Malmkj\u00e6r","year":"1990","unstructured":"Malmkj\u00e6r, K.: On some semantic issues in the reflective tower. In: Schmidt, D.A., Main, M.G., Melton, A.C., Mislove, M.W. (eds.) MFPS 1989. LNCS, vol.\u00a0442, pp. 229\u2013246. Springer, Heidelberg (1990)"},{"key":"4_CR28","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"138","DOI":"10.1007\/3-540-44978-7_9","volume-title":"Programs as Data Objects","author":"H. Masuhara","year":"2001","unstructured":"Masuhara, H., Yonezawa, A.: Run-time bytecode specialization. In: Danvy, O., Filinski, A. (eds.) PADO 2001. LNCS, vol.\u00a02053, p. 138. Springer, Heidelberg (2001)"},{"key":"4_CR29","unstructured":"MetaOCaml: A compiled, type-safe multi-stage programming language (2003), Available online from http:\/\/www.cs.rice.edu\/~taha\/MetaOCaml\/"},{"key":"4_CR30","volume-title":"Mathematics Foundations of Program Semantics","author":"E. Moggi","year":"1997","unstructured":"Moggi, E.: A categorical account of two-level languages. In: Mathematics Foundations of Program Semantics, Elsevier Science, Amsterdam (1997)"},{"key":"4_CR31","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"211","DOI":"10.1007\/BFb0053552","volume-title":"Foundations of Software Science and Computation Structures","author":"E. Moggi","year":"1998","unstructured":"Moggi, E.: Functor categories and two-level languages. In: Nivat, M. (ed.) FOSSACS 1998. LNCS, vol.\u00a01378, p. 211. Springer, Heidelberg (1998)"},{"key":"4_CR32","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"193","DOI":"10.1007\/3-540-49099-X_13","volume-title":"Programming Languages and Systems","author":"E. Moggi","year":"1999","unstructured":"Moggi, E., Taha, W., Benaissa, Z.E.-A., Sheard, T.: An idealized MetaML: Simpler, and more expressive. In: Swierstra, S.D. (ed.) ESOP 1999. LNCS, vol.\u00a01576, pp. 193\u2013207. Springer, Heidelberg (1999)"},{"key":"4_CR33","unstructured":"Multi-stage programming (2003), http:\/\/www.cs.rice.edu\/~taha\/teaching\/02F\/511"},{"key":"4_CR34","first-page":"132","volume-title":"Proceedings of the 1998 International Conference on Computer Languages","author":"F. No\u00ebl","year":"1998","unstructured":"No\u00ebl, F., Hornof, L., Consel, C., Lawall, J.L.: Automatic, templatebased run-time specialization: Implementation and experimental study. In: Proceedings of the 1998 International Conference on Computer Languages, pp. 132\u2013142. IEEE Computer Society Press, Los Alamitos (1998)"},{"key":"4_CR35","unstructured":"Oregon Graduate Institute Technical Reports. P.O. Box 91000, Portland, OR 97291-1000,USA, Last viewed (August 1999), Available online, from ftp:\/\/cse.ogi.edu\/pub\/tech-reports\/README.html"},{"key":"4_CR36","unstructured":"Pu, C., Walpole, J.: A study of dynamic optimization techniques: Lessons and directions in kernel design. Tech. Rep. CSE-93-007, Oregon Graduate Institute (1993), Available from [35]"},{"key":"4_CR37","unstructured":"Smith, B.C.: Reflection and Semantics in a Procedural Language. PhD thesis, Massachusetts Institute of Technology (1982)"},{"key":"4_CR38","doi-asserted-by":"crossref","unstructured":"Smith, B.C.: Reflection and semantics in LISP. In: ACM Symposium on Principles of Programming Languages, pp. 23\u201335 (1984)","DOI":"10.1145\/800017.800513"},{"key":"4_CR39","doi-asserted-by":"crossref","unstructured":"Smith, F., Grossman, D., Morrisett, G., Hornof, L., Jim, T.: Compiling for template-based run-time code generation. Journal of Functional Programming (2002) ( to appear)","DOI":"10.1017\/S095679680200463X"},{"key":"4_CR40","unstructured":"Taha, W.: Multi-Stage Programming: Its Theory and Applications. PhD thesis, Oregon Graduate Institute of Science and Technology (1999); Available from [35]"},{"key":"4_CR41","series-title":"Lecture Notes in Computer Science","volume-title":"Semantics, Applications, and Implementation of Program Generation","year":"2000","unstructured":"Taha, W. (ed.): Semantics, Applications, and Implementation of Program Generation. LNCS, vol.\u00a01924. Springer, Heidelberg (2000)"},{"key":"4_CR42","volume-title":"Proceedings of the Workshop on Partial Evaluation and Semantics-Based Program Maniplation (PEPM)","author":"W. Taha","year":"2000","unstructured":"Taha, W.: A sound reduction semantics for untyped CBN multi-stage computation. Or, the theory of MetaML is non-trivial. In: Proceedings of the Workshop on Partial Evaluation and Semantics-Based Program Maniplation (PEPM), Boston. ACM Press, New York (2000)"},{"key":"4_CR43","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"918","DOI":"10.1007\/BFb0055113","volume-title":"Automata, Languages and Programming","author":"W. Taha","year":"1998","unstructured":"Taha, W., Benaissa, Z.-E.-A., Sheard, T.: Multi-stage programming: Axiomatization and type-safety. In: Larsen, K.G., Skyum, S., Winskel, G. (eds.) ICALP 1998. LNCS, vol.\u00a01443, pp. 918\u2013929. Springer, Heidelberg (1998)"},{"key":"4_CR44","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"257","DOI":"10.1007\/3-540-44978-7_15","volume-title":"Programs as Data Objects","author":"W. Taha","year":"2001","unstructured":"Taha, W., Makholm, H., Hughes, J.: Tag elimination and Jones-optimality. In: Danvy, O., Filinski, A. (eds.) PADO 2001. LNCS, vol.\u00a02053, pp. 257\u2013275. Springer, Heidelberg (2001)"},{"key":"4_CR45","doi-asserted-by":"crossref","unstructured":"Taha, W., Nielsen, M.F.: Environment classifiers. In: The Symposium on Principles of Programming Languages (POPL 2003), New Orleans (2003)","DOI":"10.1145\/604131.604134"},{"key":"4_CR46","doi-asserted-by":"publisher","first-page":"203","DOI":"10.1145\/258993.259019","volume-title":"Proceedings of the Symposium on Partial Evaluation and Semantic-Based Program Manipulation (PEPM)","author":"W. Taha","year":"1997","unstructured":"Taha, W., Sheard, T.: Multi-stage programming with explicit annotations. In: Proceedings of the Symposium on Partial Evaluation and Semantic-Based Program Manipulation (PEPM), Amsterdam, pp. 203\u2013217. ACM Press, New York (1997)"},{"key":"#cr-split#-4_CR47.1","unstructured":"Taha, W., Sheard, T.: MetaML and multi-stage programming with explicit annotations. Tech. Rep. CSE-99-007, Department of Computer Science, Oregon Graduate Institute (1999);"},{"key":"#cr-split#-4_CR47.2","unstructured":"Extended version of [46], Available from [35]"},{"key":"4_CR48","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1016\/S0304-3975(00)00053-0","volume":"248","author":"W. Taha","year":"2000","unstructured":"Taha, W., Sheard, T.: MetaML: Multi-stage programming with explicit annotations. Theoretical Computer Science\u00a0248, 1\u20132 (2000); Revision of [47]","journal-title":"Theoretical Computer Science"},{"issue":"3","key":"4_CR49","doi-asserted-by":"publisher","first-page":"161","DOI":"10.1023\/A:1010078412711","volume":"13","author":"S. Thibault","year":"2000","unstructured":"Thibault, S., Consel, C., Lawall, J.L., Marlet, R., Muller, G.: Static and dynamic program compilation by interpreter specialization. Higher-Order and Symbolic Computation\u00a013(3), 161\u2013178 (2000)","journal-title":"Higher-Order and Symbolic Computation"}],"container-title":["Lecture Notes in Computer Science","Generative Programming and Component Engineering"],"original-title":[],"link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-540-39815-8_4","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,6,7]],"date-time":"2019-06-07T17:40:18Z","timestamp":1559929218000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-540-39815-8_4"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2003]]},"ISBN":["9783540201021","9783540398158"],"references-count":50,"URL":"https:\/\/doi.org\/10.1007\/978-3-540-39815-8_4","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2003]]}}}