fbpx
Wikipedia

Concatenative programming language

A concatenative programming language is a point-free computer programming language in which all expressions denote functions, and the juxtaposition of expressions denotes function composition.[1] Concatenative programming replaces function application, which is common in other programming styles, with function composition as the default way to build subroutines.

Example edit

For example, a sequence of operations in an applicative language like the following:

y = foo(x) z = bar(y) w = baz(z) 

...is written in a concatenative language as a sequence of functions:[2]

x foo bar baz 

Functions and procedures written in concatenative style are not value level, i.e. they typically do not represent the data structures they operate on with explicit names or identifiers. Instead they are function level – a function is defined as a pipeline, or a sequence of operations that take parameters from an implicit data structure upon which all functions operate, and return the function results to that shared structure so that it will be used by the next operator.[3]

The combination of compositional semantics with a syntax that mirrors such a semantic makes concatenative languages highly amenable to algebraic manipulation of programs;[4] although it may be difficult to write mathematical expressions directly in them.[5] Concatenative languages can be implemented efficiently with a stack machine, and are commonly present implicitly in virtual machines in the form of their instruction sets.[5]

Properties edit

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.[6]
  • Any subexpression can be replaced with a name that represents the same subexpression. This is referred to in the concatenative community as 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.[7]
  • Concatenative languages can be made well-suited to an implementation inspired by linear logic where no garbage is ever generated.[8]

Implementations edit

The first concatenative programming language was Forth, although Joy was the first language to call itself concatenative. Other concatenative languages are dc, Factor, Onyx, PostScript, and RPL.

Most existing concatenative languages are stack-based; this is not a requirement and other models have been proposed.[9][10][11] Concatenative languages are currently used for embedded, desktop, and web programming, as target languages, and for research purposes.

Most concatenative languages are dynamically typed. Exceptions include the statically typed Cat language.[12]

See also edit

References edit

  1. ^ "Christopher Diggins: What is a concatenative language". Drdobbs.com. 2008-12-31. Retrieved 2013-07-01.
  2. ^ "Name code not values". Concatenative.org. Retrieved 13 September 2013.
  3. ^ "Concatenative language". Concatenative.org. Retrieved 13 September 2013.
  4. ^ . Archived from the original on 2011-01-15.
  5. ^ a b "Why Concatenative Programming Matters". Retrieved 13 September 2013.
  6. ^ . Archived from the original on 2011-10-06.
  7. ^ . Archived from the original on 2010-07-31.
  8. ^ . Home.pipeline.com. Archived from the original on 2014-07-24. Retrieved 2013-07-01.
  9. ^ "The Concatenative Language XY". Nsl.com. Retrieved 2013-07-01.
  10. ^ "The Enchilada Programming Language". Enchiladacode.nl. Retrieved 2013-07-01.
  11. ^ "The Om Programming Language". Om-language.org. Retrieved 2013-07-01.
  12. ^ . Cat-language.com. Archived from the original on 2015-02-05. Retrieved 2013-07-01.

External links edit

  • concatenative.org: A wiki about concatenative languages
  • Staapl: Forth on Scheme for Embedded Controllers
  • The Enchilada Programming Language
  • The Concatenative Language XY
  • The Om Programming Language

concatenative, programming, language, concatenative, programming, language, point, free, computer, programming, language, which, expressions, denote, functions, juxtaposition, expressions, denotes, function, composition, concatenative, programming, replaces, f. A concatenative programming language is a point free computer programming language in which all expressions denote functions and the juxtaposition of expressions denotes function composition 1 Concatenative programming replaces function application which is common in other programming styles with function composition as the default way to build subroutines Contents 1 Example 2 Properties 3 Implementations 4 See also 5 References 6 External linksExample editFor example a sequence of operations in an applicative language like the following y foo x z bar y w baz z is written in a concatenative language as a sequence of functions 2 x foo bar baz Functions and procedures written in concatenative style are not value level i e they typically do not represent the data structures they operate on with explicit names or identifiers Instead they are function level a function is defined as a pipeline or a sequence of operations that take parameters from an implicit data structure upon which all functions operate and return the function results to that shared structure so that it will be used by the next operator 3 The combination of compositional semantics with a syntax that mirrors such a semantic makes concatenative languages highly amenable to algebraic manipulation of programs 4 although it may be difficult to write mathematical expressions directly in them 5 Concatenative languages can be implemented efficiently with a stack machine and are commonly present implicitly in virtual machines in the form of their instruction sets 5 Properties editThe 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 6 Any subexpression can be replaced with a name that represents the same subexpression This is referred to in the concatenative community as 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 7 Concatenative languages can be made well suited to an implementation inspired by linear logic where no garbage is ever generated 8 Implementations editThe first concatenative programming language was Forth although Joy was the first language to call itself concatenative Other concatenative languages are dc Factor Onyx PostScript and RPL Most existing concatenative languages are stack based this is not a requirement and other models have been proposed 9 10 11 Concatenative languages are currently used for embedded desktop and web programming as target languages and for research purposes Most concatenative languages are dynamically typed Exceptions include the statically typed Cat language 12 See also editFunction level programming Homoiconicity Stack oriented programming language Tacit programmingReferences edit Christopher Diggins What is a concatenative language Drdobbs com 2008 12 31 Retrieved 2013 07 01 Name code not values Concatenative org Retrieved 13 September 2013 Concatenative language Concatenative org Retrieved 13 September 2013 Rationale for Joy a functional language Archived from the original on 2011 01 15 a b Why Concatenative Programming Matters Retrieved 13 September 2013 von Thun Manfred Joy compared with other functional languages Archived from the original on 2011 10 06 von Thun Manfred Mathematical foundations of Joy Archived from the original on 2010 07 31 Henry Baker Linear Logic and Permutation Stacks The Forth Shall Be First Home pipeline com Archived from the original on 2014 07 24 Retrieved 2013 07 01 The Concatenative Language XY Nsl com Retrieved 2013 07 01 The Enchilada Programming Language Enchiladacode nl Retrieved 2013 07 01 The Om Programming Language Om language org Retrieved 2013 07 01 Cat Specification Cat language com Archived from the original on 2015 02 05 Retrieved 2013 07 01 External links editconcatenative org A wiki about concatenative languages Staapl Forth on Scheme for Embedded Controllers The Enchilada Programming Language The Concatenative Language XY The Om Programming Language Retrieved from https en wikipedia org w index php title Concatenative programming language amp oldid 1202032849, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.