Comparison of functional programming languages: Difference between revisions

Content deleted Content added
sasl year
No edit summary
Line 14:
| [[Racket (programming language)|Racket]] || {{No}} || {{Yes}}, default in Lazy Racket<ref name="lazy racket">{{cite web|url=https://docs.racket-lang.org/lazy/index.html|title=Lazy Racket|access-date=8 February 2020|first=Eli|last=Barzilay}}</ref> || style="background:#99F; text-align:center"|Dynamic by default, [[gradual typing|gradual]] with Typed Racket<ref name="typed racket">{{cite web|url=https://docs.racket-lang.org/ts-reference/index.html|title=Typed Racket|access-date=8 February 2020|first1=Sam|last1=Tobin-Hochstadt|first2=Vincent|last2=St-Amour|first3=Eric|last3=Dobson|first4=Asumu|last4=Takikawa}}</ref> || {{Yes}}<ref name="racket struct">{{cite web|url=https://docs.racket-lang.org/guide/define-struct.html|title=The Racket Guide: Programmer-Defined Datatypes|access-date=8 February 2020}}</ref> || {{Yes2}}Yes, with Algebraic Racket<ref name="algebraic racket">{{Cite web|url=https://docs.racket-lang.org/algebraic/index.html|title=Algebraic Racket|access-date=8 February 2020|first=Eric|last=Griffis}}</ref> || {{partial}}<ref name="racket immutability">{{Cite web|url=https://beautifulracket.com/explainer/data-structures.html|title=Beautiful Racket: Data Structures|access-date=8 February 2020|first=Matthew|last=Buttrick}}</ref> || {{No}} || {{dunno}} || {{dunno}}
|-
| [[Clojure]] || {{No}}<ref>{{cite web|title=Clojure Functional Programing|url=http://clojure.org/functional_programming}}</ref> || {{Yes}}<ref>{{cite web|title=Clojure - lazy|url=http://clojure.org/lazy|access-date=27 November 2013}}</ref> || style="background:#FC6; text-align:center"|Dynamic<ref>{{cite web|title=Exploring clojure: dynamic typing|date=7 December 2012 |url=http://tgoossens.wordpress.com/2012/12/07/dynamically-exploring-clojure/|access-date=26 November 2013}}</ref> || {{Yes}}<ref>{{cite web|last=Engelberg|first=Mark|title=Thoughts On Programming|date=21 April 2009 |url=http://programming-puzzler.blogspot.com/2009/04/adts-in-clojure.html|access-date=26 November 2013}}</ref> || {{Yes}}<ref name="clojure-contrib">{{cite web|title=clojure-contrib, typing example|url=https://code.google.com/p/clojure-contrib/source/browse/trunk/src/clojure/contrib/types/examples.clj?spec=svn596&r=596|access-date=26 November 2013}}</ref> || {{Yes}}<ref name=clojure.org>{{cite web|title=clojure: functional programming overview|url=http://clojure.org/functional_programming|access-date=26 November 2013}}</ref> || {{Dunno|Not applicable}} || {{Yes}} || {{dunno}}2007
|-
| [[Standard ML]] || {{No}}<ref name=cl.cam.ac.uk>{{cite web|title=Introduction to Functional Programming|url=http://www.cl.cam.ac.uk/~jrh13/slides/funprog-jrh/l8.pdf|access-date=26 November 2013}}</ref> || {{No}}<ref>{{cite web|title=Lazy and Eager Evaluation|url=http://homepages.inf.ed.ac.uk/dts/fps/lecture-notes/lazy.pdf|access-date=26 November 2013}}</ref><ref>{{cite web|last=Harper, MacQueen, Milner|title=Standard ML|url=http://www.lfcs.inf.ed.ac.uk/reports/86/ECS-LFCS-86-2/ECS-LFCS-86-2.pdf|work=Section 3.6}}</ref> || style="background:#8CF; text-align:center"|Static<ref>[[Wikibooks:Standard ML Programming/Types]]</ref> || {{Yes}} || {{Yes}}|| {{Yes}}<ref name="courses">{{cite web|title=Mutable and optional data|url=http://courses.cs.washington.edu/courses/cse341/04wi/lectures/08-ml-refs.html|access-date=28 November 2013}}</ref> || {{No}} || {{dunno}} || {{dunno}}
Line 22:
| [[F Sharp (programming language)|F#]] || {{No}}<ref>{{cite web | url=http://fsharpforfunandprofit.com/learning-fsharp/| access-date=6 December 2013 | title=Learning F#}}</ref>|| {{Yes}}<ref name="msdn">{{cite web|title=Lazy Computations (F#)|url=http://msdn.microsoft.com/en-us/library/vstudio/dd233247.aspx|publisher=Microsoft Developer Network|access-date=26 November 2013}}</ref> || style="background:#8CF; text-align:center"|Static<ref>{{cite web|title=About F#|url=http://fsharp.org/about/index.html|access-date=26 November 2013}}</ref> || {{Yes}}<ref>{{cite web|title=Structures - F#|url=https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/structures|access-date=11 May 2020}}</ref> || {{Yes}}<ref>{{cite web|title=Discriminated Unions|url=https://msdn.microsoft.com/en-us/library/dd233226.aspx}}</ref> || {{Yes}}<ref name=f-sharp-lang-spec>{{cite web|title=The F# 3.0 Language Specification: 1.1.2 Making Data Simple|url=http://fsharp.org/about/files/spec.pdf|access-date=26 November 2013}}</ref> || {{No}} || {{Yes}} || {{dunno}}
|-
| [[Haskell]] || {{Yes}}<ref name=haskell.org>{{cite web|title=Haskell Wiki|url=http://www.haskell.org|access-date=26 November 2013}}</ref> || {{Yes2}}Default<ref name=haskell.org.wiki.lazyEval>{{cite web|title=Haskell Wiki Lazy Evaluation|url=http://www.haskell.org/haskellwiki/Lazy_evaluation|access-date=26 November 2013}}</ref> || style="background:#8CF; text-align:center"|Static<ref name="haskell.org.wiki.typing">{{cite web|title=Haskell Typing|url=http://www.haskell.org/haskellwiki/Typing|publisher=HaskellWiki|access-date=26 November 2013}}</ref> || {{Yes}}<ref name="haskell.org" /> || {{Yes}}<ref name=haskell.org.wiki.abstractDataType>{{cite web|title=Haskell Wiki Abstract Data Type|url=http://www.haskell.org/haskellwiki/Abstract_data_type|access-date=26 November 2013}}</ref> || {{Yes}}<ref>{{cite web|url=http://www.haskell.org/haskellwiki/Functional_programming#Immutable_data|title=Haskell Wiki|access-date=27 November 2013}}</ref> || {{Yes}}<ref>{{cite web|url=http://www.haskell.org/tutorial/classes.html|title=Type Classes and Overloading}}</ref> || {{Yes}} || {{dunno}}1990
|-
| [[Scala (programming language)|Scala]] || {{No}}<ref name=scala-lang.org.archives.files.ScalaOverview>{{cite web|title=Scala Overview|url=http://www.scala-lang.org/old/sites/default/files/linuxsoft_archives/docu/files/ScalaOverview.pdf|access-date=26 November 2013}}</ref> || {{Yes}}<ref name=scala-lang.org.files.ScalaExample>{{cite web|title=Scala by Example|url=http://www.scala-lang.org/docu/files/ScalaByExample.pdf|access-date=26 November 2013}}</ref> || style="background:#8CF; text-align:center"|Static<ref name="scala-lang.org.archives.files.ScalaOverview" /> || {{Yes}}<ref name="scala-lang.org/files/archive">{{cite web|title=Scala Reference|url=http://www.scala-lang.org/files/archive/nightly/pdfs/ScalaReference.pdf|access-date=26 November 2013}}</ref> || {{Yes}}<ref name="scala-lang.org/files/archive" /> || {{Yes}}<ref name=scala-lang.org.collections.overview>{{cite web|title=Mutable and Immutable Collections|url=http://docs.scala-lang.org/overviews/collections/overview.html|access-date=26 November 2013}}</ref> || {{Yes}}<ref>{{cite web|title=The Neophyte's Guide to Scala Part 12: Type Classes|url=http://danielwestheide.com/blog/2013/02/06/the-neophytes-guide-to-scala-part-12-type-classes.html|access-date=29 November 2013}}</ref> || {{Yes}} || {{dunno}}
Line 28:
| [[JavaScript]] || {{No}}<ref>[[List of multi-paradigm programming languages#Language overview]]</ref>{{unreliable source?|date=March 2015}} || {{Partial}}, with extension<ref>{{cite web|last=Tao|first=Dan|title=Lazy.js|url=http://danieltao.com/lazy.js/|work=Dan Tao|access-date=26 November 2013}}</ref> || style="background:#FC6; text-align:center"|Dynamic<ref>{{cite web|title=JavaScript Overview|url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/JavaScript_Overview|work=Mozilla Developer Network|publisher=Mozilla Developer Network|access-date=26 November 2013}}</ref> || {{Partial}}, with extension<ref>{{cite web|last=Frank|first=Thomas|title=Add some klass to JavaScript|url=http://www.thomasfrank.se/klass.html|work=thomasfrank.com|access-date=26 November 2013|archive-url=https://web.archive.org/web/20131208100043/http://thomasfrank.se/klass.html|archive-date=8 December 2013|url-status=dead}}</ref> || {{Partial}}, with extension<ref>{{cite web|last=Faubion|first=Nathan|title=ADT|url=https://npmjs.org/package/adt|work=NPM|publisher=Joyent, nodejitsu|access-date=26 November 2013}}</ref> || {{partial}}<ref>[[Immutable object#JavaScript]]</ref><ref>{{cite web|title=Javascript Data structures|url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures|work=Mozilla Developer Network|publisher=Mozilla Developer Network|access-date=26 November 2013}}</ref> || {{Dunno|Not applicable}} || {{Yes}} || {{dunno}}
|-
| [[Clean (programming language)|Clean]] || {{Yes}}<ref name="clean-faq">{{cite web | url=http://clean.cs.ru.nl/FAQ | title=FAQ - Clean}}</ref> || {{Yes}}, with optional strictness annotations<ref name="clean-report">{{cite book|last1=Plasmeijer|first1=Rinus|last2=Van Eekelen|first2=Marko|last3=Van Groningen|first3=John|title=Clean Version 2.2 Language Report|date=December 2011|publisher=Department of Software Technology, University of Nijmegen|url=http://clean.cs.ru.nl/download/doc/CleanLangRep.2.2.pdf|access-date=23 May 2018}}</ref> || style="background:#99F; text-align:center"|Static with [[Uniqueness type|uniqueness]]/optionally dynamic<ref name="clean-wiki">{{cite web | url=http://clean.cs.ru.nl/Clean | title=Clean}}</ref> || {{Yes}}<ref name="clean-report"/> || {{Yes}}<ref name="clean-report"/> || {{Yes}}, except for unique types<ref name="clean-report"/> || {{Yes}}<ref name="clean-report"/> || {{Yes}} || {{dunno}}1987
|-
| [[Miranda (programming language)|Miranda]] || {{Yes}}<ref name=miranda.org.uk>{{cite web | url=http://miranda.org.uk/ | title=Miranda Official Website}}</ref> || {{Yes2}}Default<ref name="http://www.cs.kent.ac.uk/people/staff/dat/miranda/Overview.html#Lazy">{{cite web | url=http://www.cs.kent.ac.uk/people/staff/dat/miranda/Overview.html#Lazy | title=An Overview of Miranda}}</ref> || style="background:#8CF; text-align:center"|Static<ref name=miranda.org.uk/> || {{Yes}}<ref name="http://www.cs.kent.ac.uk/people/staff/dat/miranda/Overview.html#Abstract">{{cite web | url=http://www.cs.kent.ac.uk/people/staff/dat/miranda/Overview.html#Abstract | title=An Overview of Miranda}}</ref> || {{Yes}}<ref name="miranda.org.uk" /> || {{dunno}} || {{dunno}} || {{dunno}} || {{dunno}}1986
|-
| [[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}}</ref> || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || 1972
Line 46:
| [[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" /> || {{dunno}} || {{dunno}}
|-
| [[Nix (package manager)|Nix]] || {{Yes}} || {{No}} || style="background:#8CF; text-align:center"|Static || {{No}} || {{Yes}} || {{Yes}} || {{No}} || {{Yes}} || {{dunno}}2003
|-
|[[Kotlin (programming language)|Kotlin]]
Line 57:
|{{No}}
|{{Yes}}
| 2011
| {{dunno}}
|-
|[[Julia (programming language)|Julia]]
Line 68:
|{{Dunno|Not applicable}}
|{{dunno}}
| 2012
| {{dunno}}
|-
|[[PureScript]]
Line 79:
|{{Yes}}
|{{dunno}}
| 2013
| {{dunno}}
|-
|[[Rust (programming language)|Rust]]
Line 90:
|{{Yes}}, through traits<ref name="rust-traits"/>
|{{No}}
| 2010
| {{dunno}}
|}