Concatenative programming language: Difference between revisions

Content deleted Content added
m I have inserted the link destination Semantics of programming languages under the link semantics, which, so far, simply went to this linguistic article.
John Nowak (talk | contribs)
Clarified concatenative languages as a subset of point-free languages, removed a somewhat unsupported claim, and switching talk to "terms" to talk of "expressions"
Line 3:
{{Programming paradigms}}
 
A '''concatenative programming language''' is onea [[Point-free programming|point-free]] programming language in which all termsexpressions denote [[Function (mathematics)|functions]] and the juxtaposition of termsexpressions 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 and formal analysis.<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 11:
The properties of concatenative languages are the result of their compositional syntax and semantics:
 
* Concatenative languages are necessarily [[Point-free programming|point-free]] as allowing terms to denote [[Variable (programming)|variables]] would violate the rule that all terms denote functions.
* 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/philosophy/phimvt/joy/j08cnt.html Joy compared with other functional languages].</ref>
* 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.