directly applied function composition to the assemblage of building blocks known as 'monads' in the Haskell programming language.

Steele (1994)

addressed the software reuse problem in terms of composability.

Meyer (1988)

formally defined a proof rule for functional composition that assures a program's safety and liveness.

Abadi & Lamport (1993)

identified a strengthened form of compositionality by placing it into a semiotic system and applying it to the problem of structural ambiguity frequently encountered in computational linguistics.

Kracht (2001)

examined the role of compositionality in analog aspects of natural language processing.

van Gelder & Port (1993)

According to a review by , formal treatment of composition underlies validation of component assembly in visual programming languages like IBM's Visual Age for the Java language.

Gibbons (2002)

Notions of composition, including the principle of compositionality and composability, are so ubiquitous that numerous strands of research have separately evolved. The following is a sampling of the kind of research in which the notion of composition is central.

Large-scale composition[edit]

Whole programs or systems can be treated as functions, which can be readily composed if their inputs and outputs are well-defined.[5] Pipelines allowing easy composition of filters were so successful that they became a design pattern of operating systems.


Imperative procedures with side effects violate referential transparency and therefore are not cleanly composable. However if one considers the "state of the world" before and after running the code as its input and output, one gets a clean function. Composition of such functions corresponds to running the procedures one after the other. The monad formalism uses this idea to incorporate side effects and input/output (I/O) into functional languages.

Currying

Functional decomposition

Implementation inheritance

Inheritance semantics

Iteratee

Pipeline (Unix)

Principle of compositionality

Virtual inheritance

; Lamport, Leslie (1993), "Composing specifications" (PDF), ACM Transactions on Programming Languages and Systems, 15 (1): 73–132, doi:10.1145/151646.151649.

Abadi, Martín

(1986), Object-oriented Programming, an Evolutionary Approach, Reading, MA: Addison-Wesley, ISBN 978-0-201-54834-1.

Cox, Brad

Daume, Hal III, .

Yet Another Haskell Tutorial

; Lister, Tim (1995), "Software development: state of the art vs. state of the practice", in DeMarco, Tom (ed.), Why Does Software Cost So Much, and other puzzles of the Information Age, New York, NY: Dorset House, ISBN 0-932633-34-X.

DeMarco, Tom

; Port, Robert (1993), "Beyond symbolic: prolegomena to a Kama-Sutra of compositionality", in Honavar, Vasant; Uhr, Leonard (eds.), Symbol Processing and Connectionist Models in Artificial Intelligence and Cognition: Steps Toward Integration, Academic Press.

van Gelder, Timothy

(2002), Arbab, Farhad; Talcott, Carolyn (eds.), Proc. 5th International Conference on Coordination Models and Languages (PDF), Lecture Notes in Computer Science, vol. 2315, Springer-Verlag, pp. 339–350, doi:10.1007/3-540-46000-4\_18.

Gibbons, Jeremy

Korn, Henry; Liberi, Albert (1974), , New York, NY: McGraw-Hill, ISBN 0-07-035339-5.

An Elementary Approach to Functions

Kracht, Marcus (2001), "Strict compositionality and literal movement grammars", Proc. 3rd International Conference on Logical Aspects of Computational Linguistics, Lecture Notes in Computer Science, vol. 2014, Springer-Verlag, pp. 126–143, :10.1007/3-540-45738-0_8.

doi

(1988), Object-oriented Software Construction, New York, NY: Prentice Hall, pp. 13–15, ISBN 0-13-629049-3.

Meyer, Bertrand

(1956), "The magical number seven, plus or minus two: some limits on our capacity for processing information", Psychological Review, 63 (2): 81–97, doi:10.1037/h0043158, hdl:11858/00-001M-0000-002C-4646-B, PMID 13310704, archived from the original on 2010-06-19, retrieved 2010-05-02.

Miller, George A.

Pierce, Benjamin C.; Turner, David N. (2000), "Pict: A programming language based on the pi-calculus", , Foundations Of Computing Series, Cambridge, MA: MIT Press, pp. 455–494, ISBN 0-262-16188-5.

Proof, Language, and Interaction: Essays in Honour of Robin Milner