Jump to content

Applicative programming language: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Add line about semantics, from Backus' "Can Programming Be Liberated from the von Neumann Style?"
Remove reference to applicative functors and add distinguishing note
Line 1: Line 1:
{{More citations needed|date=April 2020}}
{{More citations needed|date=April 2020}}
{{Distinguish|text=[[applicative functor|applicative functors]], introduced in the paper "Applicative programming with effects"<ref>{{Cite journal|last=McBride|first=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 '''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|url=https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.404.3826&rep=rep1&type=pdf}}</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>
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|url=https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.404.3826&rep=rep1&type=pdf}}</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>


The [[Semantics (computer science)|semantics]] of applicative languages are based on [[beta reduction]] of terms, and [[side effects]] 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| year = 1978| last1 = Backus | first1 = J. | doi-access = free}}</ref>
The [[Semantics (computer science)|semantics]] of applicative languages are based on [[beta reduction]] of terms, and [[side effects]] 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| year = 1978| last1 = Backus | first1 = J. | doi-access = free}}</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]].
[[Lisp programming language|Lisp]] and [[ML programming language|ML]] are applicative programming languages.


==See also==
==See also==

Revision as of 18:10, 28 April 2020

In the classification of programming languages, an applicative programming language is built out of functions applied to arguments. Applicative languages are functional, and applicative is often used as a synonym for functional.[2] However, concatenative languages can be functional, while not being applicative.[3]

The semantics of applicative languages are based on beta reduction of terms, and side effects such as mutation of state are not permitted.[4]

Lisp and ML are applicative programming languages.

See also

References

  1. ^ McBride, Conor; Paterson, Ross (2008-01-01). "Applicative programming with effects". Journal of Functional Programming. 18 (1): 1–13. CiteSeerX 10.1.1.114.1555. doi:10.1017/S0956796807006326. ISSN 1469-7653.
  2. ^ Dershowitz, Nachum; Plaisted, David A. (1985). "Logic Programming cum Applicative Programming". Symposium on Logic Programming. Boston, MA. pp. 54–66.
  3. ^ Jon Purdy (12 February 2012). "Why Concatenative Programming Matters". Retrieved 28 April 2020.
  4. ^ Backus, J. (1978). "Can programming be liberated from the von Neumann style?: A functional style and its algebra of programs". Communications of the ACM. 21 (8): 613. doi:10.1145/359576.359579.