Abstract
The first part of the paper gives a brief overview of meta-programming, in particular program generation, and its use in software development. The second part introduces a basic calculus, related to FreshML, that supports program generation (as described through examples and a translation of MetaML into it) and programming in-the-large (this is demonstrated by a translation of CMS into it).
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Ariola, Z.M., Blom, S.: Skew confluence and the lambda calculus with letrec. Annals of pure and applied logic 117(1-3), 95–178 (2002)
Ancona, D., Moggi, E.: A fresh calculus for names management. In: Karsai and Visser [KV04],
Ancona, D., Zucca, E.: A primitive calculus for module systems. In: Nadathur, G. (ed.) PPDP 1999. LNCS, vol. 1702, pp. 62–79. Springer, Heidelberg (1999)
Ancona, D., Zucca, E.: A calculus of module systems. J. Funct. Programming 12(2), 91–132 (2002) (Extended version of [AZ99])
Batory, D., Consel, C., Taha, W. (eds.): Generative Programming and Component Engineering. LNCS, vol. 2487. Springer, Heidelberg (2002)
Cardelli, L.: Program fragments, linking, and modularization. In: Conf. Rec. POPL 1997: 24th ACM Symp. Princ. of Prog. Langs., pp. 266–277 (1997)
Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. Addison-Wesley, Reading (2000)
Cardelli, L., Mitchell, J.C.: Operations on records. In: Gunter, C.A., Mitchell, J.C. (eds.) Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, pp. 295–350. MIT Press, Cambridge (1994)
Calcagno, C., Moggi, E., Sheard, T.: Closed types for a safe imperative MetaML. J. Funct. Programming 13(3), 545–571 (2003)
Calcagno, C., Moggi, E., Taha, W.: ML-like inference for classifiers. In: Schmidt, D. (ed.) ESOP 2004. LNCS, vol. 2986, pp. 79–93. Springer, Heidelberg (2004)
Calcagno, C., Taha, W., Huang, L., Leroy, X.: Implementing multi-stage languages using ASTs, gensym, and reflection. In: Pfenning, F., Smaragdakis, Y. (eds.) GPCE 2003. LNCS, vol. 2830, pp. 57–76. Springer, Heidelberg (2003)
Davies, R.: A temporal-logic approach to binding-time analysis. In: The Symposium on Logic in Computer Science (LICS 1996), New Brunswick, pp. 184–195. IEEE Computer Society Press, Los Alamitos (1996)
Davies, R., Pfenning, F.: A modal analysis of staged computation. Journal of the ACM 48(3), 555–604 (2001)
Programming Languages & Systems, 9th European Symp. Programming. LNCS, vol. 1782. Springer, Heidelberg (2000)
Gabbay, M.J., Pitts, A.M.: A new approach to abstract syntax involving binders. In: Proc. 14th Ann. IEEE Symp. Logic in Comput. Sci., July 1999, pp. 214–224 (1999)
Greenfield, J., Short, K.: Software Factories: Assembling Applications with Patterns, Models, Frameworks and Tools. Wiley Publishing Inc, Chichester (2004)
Haack, C., Wells, J.B.: Type error slicing in implicitly typed higher-order languages. In: Degano, P. (ed.) ESOP 2003. LNCS, vol. 2618, pp. 284–301. Springer, Heidelberg (2003); Superseded by [HW04]
Haack, C., Wells, J.B.: Type error slicing in implicitly typed, higher-order languages. Sci. Comput. Programming 50, 189–224 (2004) (Supersedes [HW03])
Karsai, G., Visser, E. (eds.) GPCE 2004. LNCS, vol. 3286. Springer, Heidelberg (2004)
Lengauer, C., Batory, D., Consel, C., Odersky, M. (eds.) Domain-Specific Program Generation. LNCS, vol. 3016. Springer, Heidelberg (2004)
MetaOCaml: A compiled, type-safe multi-stage programming language (2001), Available online from http://www.cs.rice.edu/~taha/MetaOCaml/
Moggi, E., Fagorzi, S.: A monadic multi-stage metalanguage. In: Gordon, A.D. (ed.) FOSSACS 2003. LNCS, vol. 2620, pp. 358–374. Springer, Heidelberg (2003)
Machkasova, E., Turbak, F.A.: A calculus for link-time compilation. In: Smolka, G. (ed.) ESOP 2000. LNCS, vol. 1782, pp. 260–274. Springer, Heidelberg (2000)
Nanevski, A.: Meta-programming with names and necessity. In: Proceedings of the Seventh ACM SIGPLAN International Conference on Functional Programming (ICFP 2002), New York, October 2002. ACM SIGPLAN notices, ACM Press, New York (2002)
Nanevski, A., Pfenning, F.: Staged computations with names and necessity. J. Funct. Programming (to appear)
Pitts, A.M., Gabbay, M.J.: A metalanguage for programming with bound names modulo renaming. In: Backhouse, R., Oliveira, J.N. (eds.) MPC 2000. LNCS, vol. 1837, pp. 230–255. Springer, Heidelberg (2000)
Pfenning, F., Smaragdakis, Y. (eds.): GPCE 2003. LNCS, vol. 2830. Springer, Heidelberg (2003)
Sheard, T.: Accomplishments and research challenges in meta-programming. In: Taha, W. (ed.) SAIG 2001. LNCS, vol. 2196, pp. 2–46. Springer, Heidelberg (2001)
Shinwell, M.R., Pitts, A.M., Gabbay, M.J.: FreshML: Programming with binders made simple. In: Proc. 8th Int’l Conf. Functional Programming. ACM Press, New York (2003)
Szyperski, C.: Component Software: Beyond Object-Oriented Programming, 2nd edn. Addison Wesley, Reading (2002)
Taha, W.: Multi-Stage Programming: Its Theory and Applications. PhD thesis, Oregon Graduate Inst. of Science and Technology (1999), Available from ftp://cse.ogi.edu/pub/tech-reports/README.html
Taha, W., Nielsen, M.F.: Environment classifiers. In: The Symposium on Principles of Programming Languages (POPL 2003), New Orleans (2003)
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–217. ACM Press, New York (1997)
Wells, J.B.: René Vestergaard. Confluent equational reasoning for linking with first-class primitive modules (long version). A short version is [WV00]. Full paper, 3 appendices of proofs (August 1999)
Wells, J.B., Vestergaard, R.: Equational reasoning for linking with first-class primitive modules. In ESOP 2000 [ESOP00], pp. 412–428. A long version is [WV99]
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Ancona, D., Moggi, E. (2005). Program Generation and Components. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, WP. (eds) Formal Methods for Components and Objects. FMCO 2004. Lecture Notes in Computer Science, vol 3657. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11561163_10
Download citation
DOI: https://doi.org/10.1007/11561163_10
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-29131-2
Online ISBN: 978-3-540-31939-9
eBook Packages: Computer ScienceComputer Science (R0)