Direct Foundations for Compositional Programming

  title={Direct Foundations for Compositional Programming},
  author={Andong Fan and Xuejing Huang and Han Xu and Yaozhu Sun and Bruno C. d. S. Oliveira},
The recently proposed CP language adopts Compositional Programming: a new modular programming style that solves challenging problems such as the Expression Problem. CP is implemented on top of a polymorphic core language with disjoint intersection types called F + i . The semantics of F + i employs an elaboration to a target language and relies on a sophisticated proof technique to prove the coherence of the elaboration. Unfortunately, the proof technique is technically challenging and hard to… 



Compositional Programming

A language design, called CP, is presented, which is proved to be type-safe, together with several examples and three case studies of a new statically typed modular programming style called Compositional Programming.

Elaborating intersection and union types

  • Jana Dunfield
  • Computer Science
    Journal of Functional Programming
  • 2014
A foundation for compiling unrestricted intersection and union types is described: an elaboration type system that generates ordinary λ-calculus terms and it is proved that ordinary call-by-value evaluation of the elaborated program corresponds to a type-preserving Evaluation of the source program.

A Type-Directed Operational Semantics For a Calculus with a Merge Operator

A type-directed operational semantics (TDOS) for λi: a calculus with intersection types and a merge operator that is inspired by two closely related calculi by Dunfield (2014) and Oliveira et al. (2016).

Disjoint Polymorphism

Fi is presented: a calculus with disjoint intersection types, a variant of parametric polymorphism and a merge operator, which remains very flexible in terms of programs that can be written, while retaining coherence.

Type-Directed Operational Semantics for Gradual Typing

A recently proposed variant of small-step operational semantics called type-directed operational semantics (TDOS) is used, which enables eliminating some false positives where blame is raised but normal computation could succeed.

Disjoint intersection types

This paper presents λ_i: a coherent and type-safe calculus with a form of intersection types and a merge operator, and presents a type system that prevents intersection types that are not disjointed, as well as an algorithmic specifications to determine whether two types are disjoint for all three variants.

Taming the Merge Operator

A type-directed operational semantics (TDOS) for calculi with intersection types and a merge operator is proposed and the static and dynamic semantics of λi are related to the original version of the calculus and the calculus by Dunfield.

On understanding types, data abstraction, and polymorphism

A λ-calculus-based model for type systems that allows us to explore the interaction among the concepts of type, data abstraction, and polymorphism in a simple setting, unencumbered by complexities of production programming languages is developed.

The Essence of Nested Composition

This paper shows how to significantly increase the expressive power of disjoint intersection types by adding support for nested subtyping and composition, which enables simple forms of family polymorphism to be expressed in the calculus.

Row and Bounded Polymorphism via Disjoint Polymorphism

It is shown that disjoint polymorphism can recover forms of both row polymorphism and bounded polymorphism, while retaining key desirable properties, such as type-safety and decidability.