A Bowtie for a Beast: Overloading, Eta Expansion, and Extensible Data Types in F⋈ (Artifact)
Authors/Creators
- 1. University of Pennsylvania
- 2. The University of Hong Kong
Description
This is the artifact for the following paper:
A Bowtie for a Beast: Overloading, Eta Expansion, and Extensible Data Types in F⋈
[ POPL‘23 ]
Our companion paper presents F⋈, a core language that demonstrates how unions, intersections, and overloading can all coexist with a tame merge operator. Merging values from overlapping types may be ambiguous, so disjointness relations have been introduced to rule out undesired nondeterminism and obtain a well-behaved semantics. Our design principle states that any two types can support either the deterministic merging of their values, or the ability to distinguish their values, but never both. To realize this invariant, We decompose previously studied notions of disjointness into two new, dual relations that permit the operation that best suits each pair of types. This artifact contains Coq code that formalizes certain type-level parts of the semantics of F⋈, including subtyping, dispatch, and some key properties of the two disjointness relations.
Files
bowtie_coq.zip
Files
(1.2 GB)
| Name | Size | Download all |
|---|---|---|
|
md5:b930896557e68214b03c336dd1ce69d6
|
483.6 kB | Preview Download |
|
md5:ed38950a872f4d211efa3b491e6bc46b
|
1.2 GB | Download |