Concatenative Syntax

About syntax in (the prime example) Joy:

Concatenative syntax provides an alternative formulation of functional programming expressions. Functional programming languages can be expressed in a form where they consume one argument and output a value to be consumed by another. Multiple inputs are essentially aggregated together for this process to really work conceptually; naturally this does not have to happen in practice.

Function composition of this kind is a binary, associative operator, much like addition or multiplication in basic math, and it is expressed in much the same way in most programming languages with the option for infix syntax. These languages are "applicative" syntax languages, in that most expressions frame the application of functions to arguments, in some positional framework, usually with the function name placed before the arguments, called "Cambridge notation".

Concatenative notation, by comparison, reverses this and creates a new way to read programs. Data are programs with no inputs, and functions and data are placed side-by-side to show data-flow direction. An aggregating syntactic operator is required, of course. A consequence of this is that the abstraction of syntax becomes a concatenation of symbols (into an expression, not into another symbol), which logically has the same type as a list. In Joy, this is the particular form of quotation: the same notation as is used for aggregating arguments for input to a function.


This page is linked from: Joy