Rascal: From Algebraic Specification to Meta-Programming
Jeroen van den Bos (CWI), Mark Hills (CWI), Paul Klint (CWI), Tijs van, der Storm (CWI), Jurgen J. Vinju (CWI)

TL;DR
Rascal is a new programming language that integrates algebraic specification concepts to facilitate scalable meta-programming, software analysis, transformation, and domain-specific language development.
Contribution
It introduces Rascal, a language combining algebraic specification principles with practical meta-programming capabilities for large-scale applications.
Findings
Rascal is easy for non-experts to learn.
It effectively supports software analysis and transformation.
Demonstrated in Model-Driven Engineering applications.
Abstract
Algebraic specification has a long tradition in bridging the gap between specification and programming by making specifications executable. Building on extensive experience in designing, implementing and using specification formalisms that are based on algebraic specification and term rewriting (namely Asf and Asf+Sdf), we are now focusing on using the best concepts from algebraic specification and integrating these into a new programming language: Rascal. This language is easy to learn by non-experts but is also scalable to very large meta-programming applications. We explain the algebraic roots of Rascal and its main application areas: software analysis, software transformation, and design and implementation of domain-specific languages. Some example applications in the domain of Model-Driven Engineering (MDE) are described to illustrate this.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
