Concatenative language

A concatenative programming language is a functional programming paradigm in which programs are built by composing (concatenating) functions.

Concatenative describes the compositional model, rather than the execution model of the programming language. Thus, concatenative languages are a form of functional programming. Specifically, they are point-free (tacit) functional languages. Every program fragment is a function, and concatenating two fragments is how function composition is achieved. It is directly analogous to point-free style in Haskell, for example, just with different syntax.

Most concatenative languages happen to use a stack as the mechanism for implicit data flow. For this reason, the terms "concatenative languages" and "stack languages" are sometimes used interchangeably. See stack languages for more discussion on the distinction between the two concepts.

Factor is a well known example of a concatenative language. It has functional/compositional semantics, and a stack-based execution model. It also supports imperative side effects programmatically. Planet Factor is an Atom/RSS aggregator that collects the contents of various Factor-related blogs.

Other concatenative languages include Forth, Joy, PostScript, and Cat.

Concatenative.org is a community wiki that collects information about concatenative languages.