Revisiting Language Support for Generic Programming: When Genericity Is a Core Design Goal
Benjamin Chetioui (University of Bergen, Norway), Jaakko J\"arvi, (University of Turku, Finland), Magne Haveraaen (University of Bergen,, Norway)

TL;DR
This paper evaluates Magnolia, a language designed for generic programming, by implementing a library and reflecting on the development experience to identify essential features and limitations of generic support.
Contribution
It demonstrates that designing a language specifically for generic programming reveals new key features like variadics and clarifies the roles of existing idioms, highlighting limitations of property-based genericity.
Findings
Variadics are a key feature for supporting generic programming.
Existing idioms are means to an end, not fundamental features.
Limitations of genericity by property are identified.
Abstract
Context: Generic programming, as defined by Stepanov, is a methodology for writing efficient and reusable algorithms by considering only the required properties of their underlying data types and operations. Generic programming has proven to be an effective means of constructing libraries of reusable software components in languages that support it. Generics-related language design choices play a major role in how conducive generic programming is in practice. Inquiry: Several mainstream programming languages (e.g. Java and C++) were first created without generics; features to support generic programming were added later, gradually. Much of the existing literature on supporting generic programming focuses thus on retrofitting generic programming into existing languages and identifying related implementation challenges. Is the programming experience significantly better, or different…
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.
