A Type-Directed, Dictionary-Passing Translation of Featherweight Generic Go

09/18/2022
by   Martin Sulzmann, et al.
0

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. 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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
06/20/2022

Semantic preservation for a type directed translation scheme of Featherweight Go

Featherweight Go (FG) is a minimal core calculus that includes essential...
research
06/28/2021

A Dictionary-Passing Translation of Featherweight Go

The Go programming language is an increasingly popular language but some...
research
08/14/2022

Generic Go to Go: Dictionary-Passing, Monomorphisation, and Hybrid

Go is a popular statically-typed industrial programming language. To aid...
research
10/25/2017

Logical relations for coherence of effect subtyping

A coercion semantics of a programming language with subtyping is typical...
research
06/26/2020

Denotational recurrence extraction for amortized analysis

A typical way of analyzing the time complexity of functional programs is...
research
10/24/2019

A Polymorphic RPC Calculus

The RPC calculus is a simple semantic foundation for multi-tier programm...
research
07/30/2018

Coherent Explicit Dictionary Application for Haskell: Formalisation and Coherence Proof

Type classes are one of Haskell's most popular features and extend its t...

Please sign up or login with your details

Forgot password? Click here to reset