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).
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
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)