Comparison of functional programming languages: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Add: title, publisher, date. Changed bare reference to CS1/2. Removed parameters. | Use this bot. Report bugs. | Suggested by Jay8g | #UCB_toolbar
OAbot (talk | contribs)
m Open access bot: url-access updated in citation with #oabot.
 
(5 intermediate revisions by 5 users not shown)
Line 7:
! Name !! [[Purely functional programming|Pure]] !! [[Lazy evaluation]] !! [[Type system|Typing]] !! [[Abstract data type]]s !! [[Algebraic data type]]s !! [[Immutable object|Data is immutable]] !! [[Type class]]es !! Garbage collection || First appeared
|-
| [[Common Lisp]] || {{No}}<ref name=math-cs.gordon.edu>{{cite web|title=LISP Introduction|url=http://www.math-cs.gordon.edu/courses/cps323/LISP/lisp.html|access-date=26 November 2013}}</ref> || {{Partial|Simulated with [[thunk]]s<ref name=common-lisp>{{cite web|last=Antoniotti|first=Marco|title=CLAZY: Lazy Calling in Common Lisp|url=http://common-lisp.net/project/clazy/|access-date=26 November 2013}}</ref>}} || style="background:#FC6; text-align:center"|Dynamic<ref>{{cite journal|last=Tratt|first=Laurence|title=Dynamically Typed Languages|journal=Advances in Computers|date=July 2009|volume=77|pages=149–184|url=http://tratt.net/laurie/research/pubs/html/tratt__dynamically_typed_languages/|access-date=26 November 2013|doi=10.1016/s0065-2458(09)01205-4|url-access=subscription}}</ref>|| {{Yes}}<ref name=cs.sfu.ca>{{cite web|title=LISP Tutorial Lecture 3: Data Abstraction|url=http://www.cs.sfu.ca/CourseCentral/310/pwfong/Lisp/3/tutorial3.html}}</ref> || {{Partial|Extension}}<ref>{{cite web|title=Algebraic data types in Common Lisp|website=[[GitHub]] |url=https://github.com/stylewarning/cl-algebraic-data-type|access-date=11 May 2020}}</ref> || {{No}}<ref>{{cite web|title=Mutable Data Structures|url=http://caml.inria.fr/pub/docs/fpcl/fpcl-07.pdf|access-date=28 November 2013}}</ref> || {{Dunno}} || {{Yes}} || 1984
|-
| [[Scheme (programming language)|Scheme]] || {{No}}<ref name=caml.inria.fr>{{cite web|title=Similar Functional Languages|url=http://caml.inria.fr/pub/docs/oreilly-book/html/book-ora202.html|access-date=26 November 2013}}</ref> || {{Yes}}<ref>{{cite web|title=(Scheme) 17. Lazy Evaluation|url=http://www.shido.info/lisp/scheme_lazy_e.html|access-date=30 April 2020}}</ref> || style="background:#FC6; text-align:center"|Dynamic<ref name="caml.inria.fr" /> || {{Yes}}<ref>{{cite web|title=Records - Revised<sup>6</sup> Report on the Algorithmic Language Scheme|url=http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib.html|access-date=11 May 2020}}</ref> || {{Partial|Simulated with thunks}}<ref>{{cite web|title=Algebraic Data Types in Scheme|url=https://pavpanchekha.com/blog/adtscm.html|access-date=11 May 2020}}</ref> || {{No}}<ref>{{cite web|title=Programs with State|url=http://www.cs.uni.edu/~wallingf/teaching/cs3540/sessions/session26.html|access-date=29 November 2013}}</ref>|| {{No}} || {{Yes}} || 1975
Line 33:
| [[SASL (programming language)|SASL]] || {{Yes}}<ref>Turner, D.A. "An Implementation of SASL". University of St. Andrews, Department of Computer Science Technical Report. TR/75/4.</ref> || {{Yes}} || style="background:#FC6; text-align:center"|Dynamic<ref name="From Semantics to Computer Science">{{cite book | url=https://books.google.com/books?id=W2baKp7710sC&q=sasl+dynamic+typing&pg=PA128 | title=Kahn networks at the dawn of functional programming| isbn=9780521518253| last1=Kahn| first1=Gilles| last2=Bertot| first2=Yves| last3=Huet| first3=Gérard| last4=Lévy| first4=Jean-Jacques| last5=Plotkin| first5=Gordon| date=2009-09-24| publisher=Cambridge University Press}}</ref> || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || 1972
|-
| [[Elixir (programming language)|Elixir]] || {{No}} || {{Partial|Stream module<ref name="https://hexdocs.pm/elixir/Stream.html">{{cite web | url=https://hexdocs.pm/elixir/Stream.html| title=Stream — Elixir v1.17.2}} | title=Stream - Elixir v.1.6.0}}</ref>}} || style="background:#FC6; text-align:center"|Dynamic || {{Yes}} || {{No}} || {{Yes}} || {{Dunno}} || {{Yes}} || 2012
|-
| [[Erlang (programming language)|Erlang]] || {{No}} || {{No}}<ref name=erlang.org>{{cite web | url=http://www.erlang.org/doc/reference_manual/expressions.html#id76539| access-date=27 November 2013 | title=Erlang Reference Manual}}</ref> || style="background:#FC6; text-align:center"|Dynamic || {{Yes}}<ref>{{cite web | url=http://www.erlang.org/eeps/eep-0029.html | title=Erlang Programming Language - Abstract Patterns}}</ref> || {{No}} || {{Yes}}<ref name=stackoverflow.com>{{cite web | url=https://stackoverflow.com/questions/2715517/how-do-i-modify-a-record-in-erlang | access-date=15 December 2013 | title=Stack Overflow - How do I modify a record in erlang?}}</ref> || {{Dunno}} || {{Yes}} || 1986
Line 45:
| [[Idris (programming language)|Idris]] || {{Yes}}<ref name=idris-lang.org>{{cite web|title=Idris Overview|url=http://www.idris-lang.org/|access-date=6 December 2013}}</ref> || {{Yes}}<ref name="idris-lang.org" /> || style="background:#8CF; text-align:center"|Static<ref name="idris-lang.org" /> || {{Yes}}<ref name="idris-lang.org" /> || {{Yes}}<ref name="idris-lang.org" /> || {{Yes}}<ref name="idris-lang.org" /> || {{Yes}}<ref name="idris-lang.org" /> || {{Yes}} || 2007
|-
| [[Nix (package manager)|Nix]] || {{Yes}} || {{No}} || style="background:#8CF; text-align:center"|Static{{Citation needed|date=January 2025}} || {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || 2003
|-
|[[Wolfram Language]]
Line 135:
| 2001
|-
| [[Gleam (programming language)|Gleam]] || {{No}}<ref name = Gleam>{{cite web | url=https://gleam.run/frequently-asked-questions/#will-gleam-have-type-classes | title=Frequently asked questions – Gleam }}</ref> || {{Partial|Experimental external libraries}} || style="background:#8CF; text-align:center"|Static || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || 2019
|}