Skip to main content

Accomplishments and Research Challenges in Meta-programming

Invited Paper

  • Conference paper
  • First Online:
Book cover Semantics, Applications, and Implementation of Program Generation (SAIG 2001)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2196))

Abstract

In the last ten years the study of meta-programming systems, as formal systems worthy of study in their own right, has vastly accelerated. In that time a lot has been accomplished, yet much remains to be done. In this invited talk I wish to review recent accomplishments and future research challenges in hopes that this will spur interest in meta-programming in general and lead to new and better meta-programming systems.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. A. Aasa. User Defined Syntax. PhD thesis, Chalmers University, Dept of Computer Science, Chalmers University, Sweden, 1992.

    Google Scholar 

  2. A. Aasa. Precedence for conc types. In FPCA‘93: Conference on Functional Programming Languages and Computer Architecture, Copenhagen, Denmark, pages 83–91, New York, June 1993. ACM Press.

    Google Scholar 

  3. A. Aasa, K. Petersson, and D. Synek. Concrete syntax for data objects in functional languages. In Proceedings of the 1988 ACM Conference on LISP and Functional Programming, pages 96–105. ACM, ACM, July 1988.

    Google Scholar 

  4. M. Abadi and L. Cardelli. An imperative object calculus (invited paper). Theory and Practice of Object Sytems, 1(3):151–166, 1995.

    Google Scholar 

  5. L. Augustsson. Cayenne-a language with dependent types. ACM SIGPLAN Notices, 34(1):239–250, Jan. 1999.

    Article  Google Scholar 

  6. J. Auslander, M. Philipose, C. Chambers, S. J. Eggers, and B. N. Bershad. Fast, effective dynamic compilation. In Proceedings of the ACM SIGPLAN ‘96 Conference on Programming Language Design and Implementation, pages 149–159, Philadelphia, Pennsylvania, May 1996.

    Google Scholar 

  7. B. Barras, S. Boutin, C. Cornes, J. Courant, J. Filliatre, E. Giménez, H. Herbelin, G. Huet, C. M. noz, C. Murthy, C. Parent, C. Paulin, A. Saïbi, and B. Werner. The Coq Proof Assistant Reference Manual-Version V6.1. Technical Report 0203, INRIA, August 1997.

    Google Scholar 

  8. A. Bawden. Quasiquotation in LISP (invited talk). In ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 4–12. ACM, BRICS Notes Series, january 1999.

    Google Scholar 

  9. Z. E.-A. Benaissa, E. Moggi, W. Taha, and T. Sheard. A categorical analysis of multi-level languages (extended abstract). Technical Report CSE-98-018, Department of Computer Science, Oregon Graduate Institute, Dec. 1998. Available from [56].

    Google Scholar 

  10. Z. E.-A. Benaissa, E. Moggi, W. Taha, and T. Sheard. Logical modalities and multistage programming. In Federated Logic Conference (FLoC) Satellite Workshop on Intuitionistic Modal Logics and Applications (IMLA), July 1999. To appear.

    Google Scholar 

  11. R. G. Burger. Efficient Compilation and Profile-Driven Dynamic Recompilation in Scheme. PhD thesis, Indiana University Computer Science Department, March 1997.

    Google Scholar 

  12. R. G. Burger and R. K. Dybvig. An infrastructure for profile-driven dynamic recompilation. In Proceedings of the 1998 International Conference on Computer Languages, pages 240–249. IEEE Computer Society Press, 1998.

    Google Scholar 

  13. R. Burstall and J. Goguen. An informal introduction to specifications using Clear. In R. Boyer and J. Moore, editors, The Correctness Problemin Computer Science, pages 185–213. Academic, 1981. Reprinted in Software Specification Techniques, Narain Gehani and Andrew McGettrick, editors, Addison-Wesley, 1985, pages 363-390.

    Google Scholar 

  14. C. Calcagno, E. Moggi, and W. Taha. Closed types as a simple approach to safe imperative multi-stage programming. In Automata, Languages and Programming, pages 25–36, 2000.

    Google Scholar 

  15. R. Carnap. The Logical Syntax of Language. Kegan Paul, Trench and Trubner, 1937.

    Google Scholar 

  16. A. Church. A formulation of the simple theory of types. Journal of Symbolic Logic, 5:56–68, 1940.

    Article  MathSciNet  Google Scholar 

  17. Consel, Hornof, Marlet, Muller, Thibault, and Volanschi. Tempo: specializing systems applications and beyond. CSURVES: Computing Surveys Electronic Section, 30, 1998.

    Google Scholar 

  18. C. Consel and F. Noёl. A general approach for run-time specialization and its application to C. In Conference Record of POPL ‘96: The 23rd ACM SIGPLANSIGACT Symposium on Principles of Programming Languages, pages 145–156, St. Petersburg Beach, Florida, 21-24 Jan. 1996.

    Google Scholar 

  19. R. Davies. A temporal-logic approach to binding-time analysis. In Proceedings, 11 th Annual IEEE Symposium on Logic in Computer Science, pages 184–195, New Brunswick, July 1996. IEEE Computer Society Press.

    Google Scholar 

  20. R. Davies and F. Pfenning. A modal analysis of staged computation. In 23rd Annual ACM Symposium on Principles of Programming Languages (POPL‘96), pages 258–270, St. Petersburg Beach, Jan. 1996.

    Google Scholar 

  21. N. G. de Bruijn. Lambda-calculus notation with nameless dummies: a tool for automatic formula manipulation with application to the Church-Rosser theorem. Indag. Math., 34(5):381–392, 1972.

    Google Scholar 

  22. R. K. Dybvig. Fromm acrogeneration to syntactic abstraction. Higher-Order and Symbolic Computation, 13(1-2):57–63, Apr. 2000.

    Article  MATH  Google Scholar 

  23. R. K. Dybvig, R. Hieb, and C. Bruggeman. Syntactic abstraction in Scheme. LISP and Symbolic Computation, 5(4):295–326, Dec. 1992.

    Article  Google Scholar 

  24. C. M. Elliott. Extensions and Applications of Higher-Order Unification. PhD thesis, School of Computer Science, Carnegie Mellon University, May 1990. Available as Technical Report CMU-CS-90-134.

    Google Scholar 

  25. D. R. Engler, W. C. Hsieh, and M. F. Kaashoek. ‘C: A language for efficient, machine-independent dynamic code generation. In Proceedings of the 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ‘96), pages 131–144, St. Petersburg Beach, Florida, January 1996. An earlier version is available as MIT-LCS-TM-526.

    Google Scholar 

  26. L. Fegaras and T. Sheard. Revisiting catamorphisms over datatypes with embedded functions (or, programs from outer space). In Conf. Record 23rd ACM SIGPLAN/SIGACT Symp. on Principles of Programming Languages, POPL‘96, St. Petersburg Beach, FL, USA, 21-24 Jan 1996, pages 284–294. ACM Press, New York, 1996.

    Chapter  Google Scholar 

  27. M. Gabbay and A. Pitts. A new approach to abstract syntax involving binders. In G. Longo, editor, Proceedings of the 14th Annual Symposium on Logic in Computer Science (LICS‘99), pages 214–224, Trento, Italy, July 1999. IEEE Computer Society Press.

    Google Scholar 

  28. M. J. Gabbay. Theory of Inductive Definitions With a-equivalence: Semantics, Implementation, Programming Language. PhD thesis, Cambridge University, 2000.

    Google Scholar 

  29. S. E. Ganz, A. Sabry, and W. Taha. Macros as multi-stage computations: Typesafe, generative, binding macros in macroml. In Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP-2001), New York, September 2001. ACM Press.

    Google Scholar 

  30. R. Glück and J. JØrgensen. Efficient multi-level generating extensions for program specialization. In S. D. Swierstra and M. Hermenegildo, editors, Programming Languages: Implementations, Logics and Programs (PLILP‘95), volume 982 of Lecture Notes in Computer Science, pages 259–278. Springer-Verlag, 1995.

    Chapter  Google Scholar 

  31. R. Glück and J. JØrgensen. Fast binding-time analysis for multi-level specialization. In D. BjØrner, M. Broy, and I. V. Pottosin, editors, Perspectives of System Informatics, volume 1181 of Lecture Notes in Computer Science, pages 261–272. Springer-Verlag, 1996.

    Google Scholar 

  32. R. Glück and J. JØrgensen. An automatic program generator for multi-level specialization. LISP and Symbolic Computation, 10(2):113–158, 1997.

    Article  Google Scholar 

  33. M. J. C. Gordon and T. F. Melham. Introduction to HOL: A theorempr oving environment for higher order logic. Cambridge University Press, 1993.

    Google Scholar 

  34. Grant, Mock, Philipose, Chambers, and Eggers. DyC: An expressive annotationdirected dynamic compiler for C. TCS: Theoretical Computer Science, 248, 2000.

    Google Scholar 

  35. B. Grant, M. Philipose, M. Mock, C. Chambers, and S. J. Eggers. An evaluation of staged run-time optimizations in DyC. In Proceedings of the ACM SIGPLAN ‘99 Conference on Programming Language Design and Implementation, pages 293–304, Atlanta, Georgia, May 1–4, 1999.

    Google Scholar 

  36. R. Harper, F. Honsell, and G. Plotkin. A framework for defining logics. In Proceedings Symposium on Logic in Computer Science, pages 194–204, Washington, June 1987. IEEE Computer Society Press. The conference was held at Cornell University, Ithaca, New York.

    Google Scholar 

  37. B. Harrison and T. Sheard. Dynamically adaptable software with metacomputations in a staged language. In Proceedings of the Workshop on Semantics, Applications and Implementation of Program Generation (SAIG‘01), September 2001. Appearing in this proceedings.

    Google Scholar 

  38. L. Hornof and T. Jim. Certifying compilation and run-time code generation. Higher-Order and Symbolic Computation, 12(4):337–375, Dec. 1999.

    Article  MATH  Google Scholar 

  39. S. Johnson. Yacc-yet another compiler compiler. Technical Report 32, Bell Labs, 1975.

    Google Scholar 

  40. M. P. Jones. Qualified Types: Theory and Practice. Programming Research Group, Oxford University, July 1992.

    Google Scholar 

  41. M. P. Jones. A theory of qualified types. In B. Krieg-Bruckner, editor, ESOP ‘92, 4th European Symposium on Programming, Rennes, France, February 1992, Proceedings, volume 582 of Lecture Notes in Computer Science, pages 287–306. Springer-Verlag, New York, NY, 1992.

    Google Scholar 

  42. P. Lee and M. Leone. Optimizing ML with run-time code generation. In SIGPLAN ‘96 Conference on Programming Language Design and Implementation, pages 137–148, 1996.

    Google Scholar 

  43. M. Leone and P. Lee. Lightweight run-time code generation. In Partial Evaluation and Semantics-Based Program Manipulation, Orlando, Florida, June 1994 (Technical Report 94/9, Department of Computer Science, University of Melbourne), pages 97–106, 1994.

    Google Scholar 

  44. M. Leone and P. Lee. Dynamic specialization in the Fabius system. ACM Computing Surveys, 30(3es):??-??, Sept. 1998. Article 23.

    Google Scholar 

  45. J. R. Lewis, J. Launchbury, E. Meijer, and M. Shields. Implicit parameters: Dynamic scoping with static types. In Proceedings of the 27th ACM SIGPLANSIGACT Symposium on Principles of Programming Languages (POLP-00), pages 108–118, N.Y., Jan. 19-21 2000. ACM Press.

    Google Scholar 

  46. H. Massalin. Synthesis: An Efficient Implementation of Fundamental Operating System Services. PhD thesis, Columbia University, 1992.

    Google Scholar 

  47. D. Miller. An extension to ML to handle bound variables in data structures: Preliminary report. In Informal Proceedings of the Logical Frameworks BRA Workshop, June 1990. Available as UPenn CIS technical report MS-CIS-90-59.

    Google Scholar 

  48. E. Moggi. Functor categories and two-level languages. In FoSSaCS ‘98, volume 1378 of Lecture Notes in Computer Science. Springer Verlag, 1998.

    Google Scholar 

  49. E. Moggi, W. Taha, Z. Benaissa, and T. Sheard. An idealized MetaML: Simpler, and more expressive. In European Symposium on Programming (ESOP), volume 1576 of Lecture Notes in Computer Science, pages 193–207. Springer-Verlag, 1999.

    Google Scholar 

  50. E. Moggi, W. Taha, Z. El-Abidine Benaissa, and T. Sheard. An idealized MetaML: Simpler, and more expressive. Lecture Notes in Computer Science, 1576:193–207, 1999.

    Google Scholar 

  51. F. Nielson. Programtransform ations in a denotational setting. ACM Trans. Prog. Lang. Syst., 7(3):359–379, July 1985.

    Article  MATH  MathSciNet  Google Scholar 

  52. F. Nielson. Correctness of code generation froma two-level meta-language. In B. Robinet and R. Wilhelm, editors, Proceedings of the European Symposium on Programming (ESOP 86), volume 213 of Lecture Notes in Computer Science, pages 30–40, Saarbrücken, Mar. 1986. Springer.

    Google Scholar 

  53. F. Nielson. Two-level semantics and abstract interpretation. Theoretical Computer Science, 69(2):117–242, Dec. 1989.

    Article  MATH  MathSciNet  Google Scholar 

  54. F. Nielson and H. R. Nielson. Two-level semantics and code generation. Theoretical Computer Science, 56(1):59–133, Jan. 1988.

    Article  MATH  MathSciNet  Google Scholar 

  55. F. Noёl, L. Hornof, C. Consel, and J. L. Lawall. Automatic, template-based runtime specialization: Implementation and experimental study. In Proceedings of the 1998 International Conference on Computer Languages, pages 132–142. IEEE Computer Society Press, 1998.

    Google Scholar 

  56. Oregon Graduate Institute Technical Reports. P.O. Box 91000, Portland, OR 97291-1000,USA. Available online from ftp://cse.ogi.edu/pub/tech-reports/README.html. Last viewed August 1999.

  57. L. C. Paulson. Isabelle: The next 700 theorempro vers. In P. Odifreddi, editor, Logic and Computer Science, pages 361–386. Academic Press, 1990.

    Google Scholar 

  58. E. Pašalić, T. Sheard, and W. Taha. DALI: An untyped, CBV functional language supporting first-order datatypes with binders (technical development). Submitted to ICFP2000.

    Google Scholar 

  59. E. Pašalić, T. Sheard, and W. Taha. DALI: An untyped, CBV functional language supporting first-order datatypes with binders (technical development). Technical Report CSE-00-007, OGI, 2000. Available from[56].

    Google Scholar 

  60. F. Pfenning. Elf: A language for logic definition and verified meta-programming. In Fourth Annual Symposium on Logic in Computer Science, pages 313–322, Pacific Grove, California, June 1989. IEEE Computer Society Press.

    Google Scholar 

  61. F. Pfenning. Logic programming in the LF logical framework. In G. Huet and G. Plotkin, editors, Logical Frameworks, pages 149–181. Cambridge University Press, 1991.

    Google Scholar 

  62. F. Pfenning and C. Schürmann. System description: Twelf-A meta-logical framework for deductive systems. In H. Ganzinger, editor, Proceedings of the 16th International Conference on Automated Deduction (CADE-16), volume 1632 of LNAI, pages 202–206, Berlin, July 7–10, 1999. Springer-Verlag.

    Google Scholar 

  63. A. M. Pitts and M. J. Gabbay. A metalanguage for programming with bound names modulo renaming. In R. Backhouse and J. N. Oliveira, editors, Mathematics of Program Construction. 5th International Conference, MPC2000, Ponte de Lima, Portugal, July 2000. Proceedings, volume 1837 of Lecture Notes in Computer Science, pages 230–255. Springer-Verlag, Heidelberg, 2000.

    Chapter  Google Scholar 

  64. M. Poletto, W. C. Hsieh, D. R. Engler, and M. F. Kaashoek. ‘C and tcc: A language and compiler for dynamic code generation. ACM Transactions on Programming Languages and Systems, 21(2):324–369, March 1999.

    Article  Google Scholar 

  65. M. Poletto and V. Sarkar. Linear scan register allocation. ACM Transactions on Programming Languages and Systems, 21(5):895–913, September 1999.

    Article  Google Scholar 

  66. R. Pollack. The Theory of LEGO: A Proof Checker for the Extended Calculus of Constructions. PhD thesis, University of Edinburgh, 1994.

    Google Scholar 

  67. C. Pu, H. Massalin, and J. Ioannidis. The synthesis kernel. Usenix Journal, Computing Systems, 1(1):11, Winter 1988.

    Google Scholar 

  68. N. Ramsey. Pragmatic aspects of reusable software generators. In Proceedings of the Workshop on Semantics, Applications and Implementation of Program Generation (SAIG), pages 149–171, September 2000. Workshop held in collaboration with the International Conference on Functional Programming (ICFP).

    Google Scholar 

  69. T. Sheard. Using MetaML: A staged programming language. Lecture Notes in Computer Science, 1608:207-??, 1999.

    Article  Google Scholar 

  70. T. Sheard, Z. Benaissa, and E. Pasalic. Dsl implementation using staging and monads. In Second Conference on Domain-Specific Languages (DSL‘99), Austin, Texas, October 1999. USEUNIX.

    Google Scholar 

  71. M. Shields. Static Types for Dynamic Documents. PhD thesis, Department of Computer Science, Oregon Graduate Institute, Feb. 2001. Available at http://www.cse.ogi.edu/~mbs/pub/thesis/thesis.ps.

  72. M. Shields, T. Sheard, and S. P. Jones. Dynamic typing through staged type inference. In Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 289–302, Jan. 1998.

    Google Scholar 

  73. G. L. Steele, Jr. and R. P. Gabriel. The evolution of LISP. ACM SIGPLAN Notices, 28(3):231–270, 1993.

    Article  Google Scholar 

  74. W. Taha. Multi-Stage Programming: Its Theory and Applications. PhD thesis, Oregon Graduate Institute of Science and Technology, July 1999. Revised October 99. Available fromauthor (taha@cs.chalmers.se).

    Google Scholar 

  75. W. Taha. A sound reduction semantics for untyped CBN multi-stage computation: Or, the theory of MetaML is non-trivial. In Proceedings of the 2000 ACM SIGPLAN Workshop on Evaluation and Semantics-Based Program Manipulation (PEPM-00), pages 34–43, N.Y., Jan. 22-23 2000. ACM Press.

    Google Scholar 

  76. W. Taha. A sound reduction semantics for untyped CBN mutli-stage computation. Or, the theory of MetaML is non-trivial. In 2000 SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Maniplation (PEPM‘00), Jan. 2000.

    Google Scholar 

  77. W. Taha, Z.-E.-A. Benaissa, and T. Sheard. Multi-stage programming: Axiomatization and type-safety. In 25th International Colloquiumon Automata, Languages, and Programming, volume 1443 of Lecture Notes in Computer Science, pages 918–929, Aalborg, July 1998.

    Chapter  Google Scholar 

  78. W. Taha, Z.-E.-A. Benaissa, and T. Sheard. Multi-stage programming: Axiomatization and type safety. Technical Report CSE-98-002, Oregon Graduate Institute, 1998. Available from[56].

    Google Scholar 

  79. W. Taha and T. Sheard. Multi-stage programming with explicit annotations. In Proceedings of the ACM-SIGPLAN Symposium on Partial Evaluation and semantic based program manipulations PEPM‘97, Amsterdam, pages 203–217. ACM, 1997. An extended and revised version appears in [81].

    Google Scholar 

  80. W. Taha and T. Sheard. MetaML and multi-stage programming with explicit annotations. Technical Report CSE-99-007, Department of Computer Science, Oregon Graduate Institute, Jan. 1999. Extended version of [79]. Available from [56].

    Google Scholar 

  81. W. Taha and T. Sheard. MetaML: Multi-stage programming with explicit annotations. Theoretical Computer Science, 248(1-2), 2000. Revised version of [80].

    Google Scholar 

  82. S. Thibault, C. Consel, and G. Muller. Safe and efficient active network programming. In Seventeenth IEEE Symposium on Reliable Distributed Systems (SRDS ‘98), pages 135–143, Washington-Brussels-Tokyo, Oct. 1998. IEEE.

    Google Scholar 

  83. W. van Orman Quine. Mathematical Logic. Harvard University Press, Cambridge, 2 edition, 1974.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2001 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Sheard, T. (2001). Accomplishments and Research Challenges in Meta-programming. In: Taha, W. (eds) Semantics, Applications, and Implementation of Program Generation. SAIG 2001. Lecture Notes in Computer Science, vol 2196. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44806-3_2

Download citation

  • DOI: https://doi.org/10.1007/3-540-44806-3_2

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-42558-8

  • Online ISBN: 978-3-540-44806-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics