A Type-Directed, Dictionary-Passing Translation of Method Overloading and Structural Subtyping in Featherweight Generic Go
Featherweight Generic Go (FGG) is a minimal core calculus modeling the essential features of the programming language Go. It includes support for overloaded methods, interface types, structural subtyping and generics. The most straightforward semantic description of the dynamic behavior of FGG progr...
Gespeichert in:
Hauptverfasser: | , |
---|---|
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext bestellen |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | Featherweight Generic Go (FGG) is a minimal core calculus modeling the
essential features of the programming language Go. It includes support for
overloaded methods, interface types, structural subtyping and generics. The
most straightforward semantic description of the dynamic behavior of FGG
programs is to resolve method calls based on runtime type information of the
receiver.
This article shows a different approach by defining a type-directed
translation from FGG- to an untyped lambda-calculus. FGG- includes all features
of FGG but type assertions. The translation of an FGG- program provides
evidence for the availability of methods as additional dictionary parameters,
similar to the dictionary-passing approach known from Haskell type classes.
Then, method calls can be resolved by a simple lookup of the method definition
in the dictionary.
Every program in the image of the translation has the same dynamic semantics
as its source FGG- program. The proof of this result is based on a syntactic,
step-indexed logical relation. The step-index ensures a well-founded definition
of the relation in the presence of recursive interface types and recursive
methods. Although being non-deterministic, the translation is coherent. |
---|---|
DOI: | 10.48550/arxiv.2209.08511 |