Affiliation:
1. University of Bristol Bristol United Kingdom and The University of Hong Kong, Hong Kong, China
2. The University of Hong Kong, Hong Kong, China
Abstract
Modularity is a key concern in programming. However, programming languages remain limited in terms of modularity and extensibility. Small canonical problems, such as the Expression Problem (EP), illustrate some of the basic issues: the dilemma between choosing one kind of extensibility over another one in most programming languages. Other problems, such as how to express dependencies in a modular way, add up to the basic issues and remain a significant challenge.
This article presents a new statically typed modular programming style called
Compositional Programming
. In Compositional Programming, there is no EP: It is easy to get extensibility in multiple dimensions (i.e., it is easy to add new variants as well as new operations). Compositional Programming offers an alternative way to model data structures that differs from both algebraic datatypes in functional programming and conventional OOP class hierarchies. We introduce four key concepts for Compositional Programming:
compositional interfaces
,
compositional traits
,
method patterns
, and
nested trait composition
. Altogether, these concepts allow us to naturally solve challenges such as the Expression Problem, model attribute-grammar-like programs, and generally deal with modular programs with
complex dependencies
. We present a language design, called
CP
, which is proved to be type-safe, together with several examples and three case studies.
Funder
Hong Kong Research Grant Council
Publisher
Association for Computing Machinery (ACM)
Reference85 articles.
1. A calculus of module systems;Ancona Davide;J. Funct. Prog.,2002
2. A filter lambda model and the completeness of type assignment 1;Barendregt Henk;J. Symb. Logic,1983
Cited by
13 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献