Affiliation:
1. University of Pennsylvania, USA
2. University of Hong Kong, China
Abstract
The typed
merge operator
offers the promise of a compositional style of statically-typed programming in which solutions to the expression problem arise naturally. This approach, dubbed
compositional programming
, has recently been demonstrated by Zhang et al.
Unfortunately, the merge operator is an unwieldy beast. 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. Past type systems using a disjoint merge operator rely on intersection types, but extending such systems to include union types or overloaded functions is problematic: naively adding either reintroduces ambiguity. In a nutshell: the elimination forms of unions and overloaded functions require values to be distinguishable by case analysis, but the merge operator can create exotic values that violate that requirement.
This paper presents
F
⋈
, a core language that demonstrates how unions, intersections, and overloading can all coexist with a tame merge operator. The key is an underlying design principle that states that any two inhabited 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 duality respects the polarization of the type structure, yielding an expressive language that we prove to be both type safe and deterministic.
Funder
NSF
Office of Naval Research
Hong Kong Research Grants Council
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Reference51 articles.
1. Copatterns
2. Logic Programming with Focusing Proofs in Linear Logic
3. Intersection and Union Types: Syntax and Semantics
4. Henk Barendregt , Mario Coppo , and Mariangiola Dezani-Ciancaglini . 1983. A filter lambda model and the completeness of type assignment. The journal of symbolic logic, 48, 04 ( 1983 ), 931–940. Henk Barendregt, Mario Coppo, and Mariangiola Dezani-Ciancaglini. 1983. A filter lambda model and the completeness of type assignment. The journal of symbolic logic, 48, 04 (1983), 931–940.
5. Xuan Bi and Bruno C . d. S. Oliveira. 2018 . Typed First-Class Traits. In European Conference on Object-Oriented Programming (ECOOP). Xuan Bi and Bruno C. d. S. Oliveira. 2018. Typed First-Class Traits. In European Conference on Object-Oriented Programming (ECOOP).
Cited by
4 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Disjoint Polymorphism with Intersection and Union Types;Proceedings of the 26th ACM International Workshop on Formal Techniques for Java-like Programs;2024-09-20
2. Contextual Typing;Proceedings of the ACM on Programming Languages;2024-08-15
3. Polymorphic Type Inference for Dynamic Languages;Proceedings of the ACM on Programming Languages;2024-01-05
4. Generic Programming with Extensible Data Types: Or, Making Ad Hoc Extensible Data Types Less Ad Hoc;Proceedings of the ACM on Programming Languages;2023-08-30