type-system

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

Fi+

Coq formalization and implementation of the Fi+ calculus

SEDEL

Haskell implementation of a type system for first-class traits

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 …

Consistent Subtyping for All

Consistent subtyping is employed in some gradual type systems to validate type conversions. The original definition by Siek and Taha serves as a guideline for designing gradual type systems with subtyping. Polymorphic types à la System F also induce …

Disjoint Intersection Types: Theory and Practice

Programs are hard to write. It was so 50 years ago at the time of the so-called software crisis; it still remains so nowadays. Over the years, we have learned---the hard way---that software should be constructed in a modular way, i.e., as a network …

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, …

Consistent Subtyping for All

Consistent subtyping is employed in some gradual type systems to validate type conversions. The original definition by Siek and Taha serves as a guideline for designing many gradual type systems with subtyping. Polymorphic types `a la System F also …

Unified Syntax with Iso-Types

Traditional designs for functional languages (such as Haskell or ML) have separate sorts of syntax for terms and types. In contrast, many dependently typed languages use a unified syntax that accounts for both terms and types. Unified syntax …