Abstract
The PLanCompS project proposes a component-based approach to programming-language development in which fundamental constructs (funcons) are reused across language definitions. Homogeneous Generative Meta-Programming (HGMP) enables writing programs that generate code as data, at run-time or compile-time, for manipulation and staged evaluation. Building on existing formalisations of HGMP, this paper introduces funcons for HGMP and demonstrates their usage in component-based semantics.
- Nada Amin and Tiark Rompf. 2017. Collapsing Towers of Interpreters. Proceedings of the ACM on Programming Languages 2, POPL, Article 52 (2017), 33 pages. Google Scholar
Digital Library
- Zena M. Ariola, John Maraist, Martin Odersky, Matthias Felleisen, and Philip Wadler. 1995. A Call-by-need Lambda Calculus. In Proceedings of the 22Nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '95). 233-246. Google Scholar
Digital Library
- Kenichi Asai. 2014. Compiling a Reflective Language Using MetaOCaml. In Proceedings of the 2014 International Conference on Generative Programming: Concepts and Experiences (GPCE 2014). 113-122. Google Scholar
Digital Library
- Martin Berger, Laurence Tratt, and Christian Urban. 2017. Modelling homogeneous generative meta-programming. In Proceedings of the 31st European Conference on Object-Oriented Programming (ECOOP 2017). 5:1-5:23.Google Scholar
- Martin Berger, Laurence Tratt, and Andrei Voronkov. 2010. Program Logics for Homogeneous Meta-programming. In Logic for Programming, Artificial Intelligence, and Reasoning. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 64-81. Google Scholar
Digital Library
- L. Thomas van Binsbergen, Neil Sculthorpe, and Peter D. Mosses. 2016. Tool Support for Component-based Semantics. In Companion Proceedings of the 15th International Conference on Modularity. ACM, 8-11. Google Scholar
Digital Library
- Martin Churchill, Peter D. Mosses, Neil Sculthorpe, and Paolo Torrini. 2015. Reusable Components of Semantic Specifications. In Transactions on Aspect-Oriented Software Development XII. 132-179.Google Scholar
- J. A. Goguen, J. W. Thatcher, E. G. Wagner, and J. B. Wright. 1977. Initial Algebra Semantics and Continuous Algebras. Journal of the ACM 24, 1 (1977), 68-95. Google Scholar
Digital Library
- Jun Inoue, Oleg Kiselyov, and Yukiyoshi Kameyama. 2016. Staging Beyond Terms: Prospects and Challenges. In Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM '16). 103-108. Google Scholar
Digital Library
- Oleg Kiselyov. 2014. The Design and Implementation of BER MetaOCaml. In Functional and Logic Programming. 86-102.Google Scholar
Cross Ref
- Simon Marlow. 2010. Haskell 2010 Language Report. https://www.haskell.org/onlinereport/haskell2010/. (2010). [Online, accessed 08-June-2018].Google Scholar
- Peter Mosses. 1990. Denotational Semantics. In Handbook of Theoretical Computer Science (Vol. B): Formal Models and Semantics, Jan van Leeuwen (Ed.). 577-631. Google Scholar
Digital Library
- Peter D. Mosses. 2004. Modular Structural Operational Semantics. Journal of Logic and Algebraic Programming 60-61 (2004), 195-228.Google Scholar
- Peter D. Mosses and Mark J. New. 2009. Implicit Propagation in Structural Operational Semantics. Electronic Notes in Theoretical Computer Science 229, 4 (2009), 49-66. Google Scholar
Digital Library
- Martin Odersky. 2018. Scala Language Specification. https://scala-lang.org/files/archive/spec/2.13/. (2018). [Online, accessed 08-June-2018].Google Scholar
- PLanCompS project. 2018. GitHub - Funcons-Beta. https://plancomps.github.io/CBS-beta/Funcons-beta. (2018). [Online, accessed 06-June-2018].Google Scholar
- Gordon D. Plotkin. 2004. A Structural Approach to Operational Semantics. Journal of Logic and Algebraic Programming 60-61 (2004), 17-139.Google Scholar
- Neil Sculthorpe, Paolo Torrini, and Peter D. Mosses. 2015. A Modular Structural Operational Semantics for Delimited Continuations. In Proceedings of the Workshop on Continuations. 63-80.Google Scholar
- Tim Sheard and Simon Peyton Jones. 2002. Template Metaprogramming for Haskell. ACM SIGPLAN Notices 37, 12 (2002), 60-75. Google Scholar
Digital Library
- Walid Taha and Tim Sheard. 2000. MetaML and multi-stage programming with explicit annotations. Theoretical Computer Science 248, 1 (2000), 211-242. Google Scholar
Digital Library
- Laurence Tratt. 2005. Compile-time Meta-programming in a Dynamically Typed OO Language. In Proceedings of the 2005 Symposium on Dynamic Languages (DLS '05). ACM, 49-63. Google Scholar
Digital Library
- L. Thomas van Binsbergen. 2018. Interpreter for ?v and extensions. https://hackage.haskell.org/package/funcons-lambda-cbv-mp-0.1.0.2. (2018). [Online, accessed 28-Sep-2018].Google Scholar
- L. Thomas van Binsbergen and Neil Sculthorpe. 2016. Funcons Interpreter and Repository. https://hackage.haskell.org/package/funcons-tools. (2016). [Online, accessed 28-June-2018].Google Scholar
- Takahisa Watanabe and Yukiyoshi Kameyama. 2018. Program generation for ML modules (short paper). In Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation. 60-66. Google Scholar
Digital Library
- Jeremy Yallop, Tamara von Glehn, and Ohad Kammar. 2018. Partially static data as free extension of algebras. In Proceedings of the 23rd ACM SIGPLAN International Conference on Functional Programming (ICFP 2018). ACM.Google Scholar
Digital Library
Index Terms
Funcons for HGMP: the fundamental constructs of homogeneous generative meta-programming (short paper)
Recommendations
Funcons for HGMP: the fundamental constructs of homogeneous generative meta-programming (short paper)
GPCE 2018: Proceedings of the 17th ACM SIGPLAN International Conference on Generative Programming: Concepts and ExperiencesThe PLanCompS project proposes a component-based approach to programming-language development in which fundamental constructs (funcons) are reused across language definitions. Homogeneous Generative Meta-Programming (HGMP) enables writing programs that ...
Fundamental Constructs in Programming Languages
Leveraging Applications of Formal Methods, Verification and ValidationAbstractWhen a new programming language appears, the syntax and intended behaviour of its programs need to be specified. The behaviour of each language construct can be concisely specified by translating it to fundamental constructs (funcons), ...
Semantics of programming languages
A semantic specification of a programming language can be relevant for programmers to understand software written in the language, as well as for the implementers of a language to understand the intentions of its designers. In the early 1980s, Jan ...







Comments