Content deleted Content added
John Nowak (talk | contribs) Fixed broken link to Joy rationale |
John Nowak (talk | contribs) Fixed more broken links |
||
Line 1:
{{Programming paradigms}}
A '''concatenative programming language''' is a [[Point-free programming|point-free]] programming language in which all expressions denote [[Function (mathematics)|functions]] and the juxtaposition of expressions denotes [[function composition]].<ref name="dobbscodetalk">[http://drdobbs.com/blogs/architecture-and-design/228701299 Christopher Diggins: What is a concatenative language]</ref> The combination of a compositional [[Semantics of programming languages|semantics]] with a [[Syntax of programming languages|syntax]] that mirrors such a semantics makes concatenative languages highly amenable to algebraic manipulation.<ref>[http://www.latrobe.edu.au/philosophy/phimvt/joy/j00rat.html Rationale for Joy, a functional language]</ref>
Much of the original work on concatenative language theory was carried out by [[Manfred von Thun]].
Line 9:
The properties of concatenative languages are the result of their compositional syntax and semantics:
* The reduction of any expression is the simplification of one function to another function; it is never necessary to deal with the application of functions to objects.<ref>[http://www.latrobe.edu.au
* Any subexpression can be replaced with a name that represents the same subexpression. This is referred to in the concatenative community as [[Code refactoring|factoring]] and is used extensively to simplify programs into smaller parts.
* The syntax and semantics of concatenative languages form the algebraic structure of a [[monoid]].<ref>[http://www.latrobe.edu.au/philosophy/phimvt/joy/j02maf.html von Thun, Manfred: Mathematical foundations of Joy]</ref>
|