disjoint-intersection-type

Row and Bounded Polymorphism via Disjoint Polymorphism

Polymorphism and subtyping are important features in mainstream OO languages. The most common way to integrate the two is via F

NeColus

Coq formalization of a coherent calculus with records and disjoint intersection types that supports nested composition

Distributive Disjoint Polymorphism for Compositional Programming

Popular programming techniques such as shallow embeddings of Domain Specific Languages (DSLs), finally tagless or object algebras are built on the principle of compositionality. However, existing programming languages only support simple …

The Essence of Nested Composition

Calculi with disjoint intersection types support an introduction form for intersections called the merge operator, while retaining a coherent semantics. Disjoint intersections types have great potential to serve as a foundation for powerful, flexible …

Typed First-Class Traits

Many dynamically typed languages (including JavaScript, Ruby, Python or Racket) support first-class classes, or related concepts such as first-class traits and/or mixins. In those languages classes are first-class values and, like any other values, …