Applicative programming language: Difference between revisions

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:
{{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>
 
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]].
 
==See also==