Van Wyk, Ericde Moor, OegeSittampalam, GaneshSanabria Piretti, IvanBackhouse, KevinKwiatkowsky, Paul2020-12-102020-12-102001Techincal Report PRG-RR-01-21, Computing Laboratory, University of Oxfordhttps://hdl.handle.net/11299/217352Associated research group: Minnesota Extensible Language ToolsProgramming languages and programming tasks are rarely a perfect fit: often a program could be much clarified by using a number of tailored language features, but the cost of introducing those features in the language is perceived as too high. If a programming language could be implemented in a highly modular fashion, that cost might be lower. To achieve such modularisation is the goal of Intentional Programming; language features are called intentions to emphasise the fact that language features can be tailored to the programmer's wishes. One starts with a host language, that is subsequently extended by adding new domain-specific features. Crucially, these features should be composable wherever possible; independent language features should co-exist peacefully without each needing to be explicitly aware of presence or absence of others. Indeed, given a sufficiently broad library of intentions, it should be possible to construct a new language from the ground up. When adding new intentions to a language it is essential that they be implemented in an efficient manner. It is critical that programs developed via Intentional Programming are not any less efficient than those developed by traditional means. Our aims as intention developers are to build intentions which are both expressive and efficient.Intentional programming: a host of language featuresReport