Applicative programming language: Difference between revisions

Content deleted Content added
No edit summary
Tags: Mobile edit Mobile web edit
Citation bot (talk | contribs)
Removed parameters. | Use this bot. Report bugs. | #UCB_CommandLine
 
(12 intermediate revisions by 6 users not shown)
Line 1:
{{unreferencedMore citations needed|date=DecemberApril 20112020}}
{{Distinguish|text=[[applicative functor|applicative functors]], introduced in the paper "Applicative programming with effects"<ref>{{Cite journal|last1=McBride|first1=Conor|last2=Paterson|first2=Ross|date=2008-01-01|title=Applicative programming with effects|journal=Journal of Functional Programming|volume=18|issue=1|pages=1–13|doi=10.1017/S0956796807006326|issn=1469-7653|citeseerx=10.1.1.114.1555}}</ref>}}
In the [[programming paradigm|classification of programming languages]], an '''application programming language''' is designed to support the development of programs as giving the result of a function of the combined variables. Successive functional transformations are applied to data to arrive at the result. Such a [[programming language|language]], with program control and total state kept in the background, may also be known as a [[functional language]], in a rather loose sense of the term.
 
In the [[programming paradigm|classification of programming languages]], an '''applicative programming language''' is built out of [[Function (computer science)|functions]] applied to [[Argument (computer science)|arguments]]. Applicative languages are [[Functional programming|functional]], and applicative is often used as a synonym for functional.<ref>{{cite conference|title=Logic Programming cum Applicative Programming|first1=Nachum|last1=Dershowitz|first2=David A.|last2=Plaisted|year=1985|book-title=Symposium on Logic Programming|place=Boston, MA|pages=54–66|citeseerx=10.1.1.404.3826}}</ref> However, [[concatenative languages]] can be functional, while not being applicative.<ref>{{cite web|url=https://evincarofautumn.blogspot.com/2012/02/why-concatenative-programming-matters.html|title=Why Concatenative Programming Matters|author=Jon Purdy|date=12 February 2012|access-date=28 April 2020}}</ref>
[[Lisp programming language|Lisp]] and [[ML programming language|ML]] are applicative programming languages. In [[Haskell (programming language)|Haskell]], this programming paradigm is developed into the applicative [[functor]], which extends the [[higher-order function]]al abstraction beyond [[Monad (functional programming)|monad]].
 
The [[Semantics (computer science)|semantics]] of applicative languages are based on [[beta reduction]] of terms, and [[Side effect (computer science)|Side effect]] such as mutation of [[State (computer science)|state]] are not permitted.<ref name="Backus 1977">{{Cite journal | doi = 10.1145/359576.359579| title = Can programming be liberated from the von Neumann style?: A functional style and its algebra of programs| journal = Communications of the ACM| volume = 21| issue = 8| pages = 613–641| year = 1978| last1 = Backus | first1 = J. | doi-access = free}}</ref>
 
[[Lisp programming language|Lisp]] and [[ML programming language|ML]] are applicative programming languages.
 
==See also==
Line 8 ⟶ 12:
* [[Function-level programming]]
 
==External linksReferences==
{{Reflist}}
* [http://www.soi.city.ac.uk/~ross/papers/Applicative.html Applicative Programming with Effects] (in Haskell, 2008) by [[Conor McBride]] and Ross Paterson
 
[[Category:Programming language classification]]