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. See also Currying Functional decomposition Implementation inheritance Inheritance semantics Iteratee Pipeline (Unix) Principle of compositionality Virtual inheritance Notes References . . . . . . . . . . . . . Programming language topics Higher-order functions