Featherweight Go
Robert Griesemer, Raymond Hu, Wen Kokke, Julien Lange, Ian Lance, Taylor, Bernardo Toninho, Philip Wadler, Nobuko Yoshida

TL;DR
This paper presents a formal design for generics in Go, inspired by Featherweight Java, utilizing structural subtyping and monomorphisation, and addresses the Expression Problem.
Contribution
It introduces a formalized monomorphisation-based generics design for Go, supporting structural subtyping and solving the Expression Problem.
Findings
Formalization of monomorphisation in Go generics
Design supports structural subtyping in Go
Addresses the Expression Problem in language design
Abstract
We describe a design for generics in Go inspired by previous work on Featherweight Java by Igarashi, Pierce, and Wadler. Whereas subtyping in Java is nominal, in Go it is structural, and whereas generics in Java are defined via erasure, in Go we use monomorphisation. Although monomorphisation is widely used, we are one of the first to formalise it. Our design also supports a solution to The Expression Problem.
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.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Artificial Intelligence in Games · Digital Games and Media
