请输入您要查询的百科知识:

 

词条 Comparison of functional programming languages
释义

  1. References

{{Orphan|date=July 2016}}

The table shows a comparison of functional programming languages which compares various features and designs of different functional programming languages.

Name Pure Lazy Evaluation Typing Abstract Data Types Algebraic Data Types Data is Immutable Type Classes Closures
Lisp {{No}}[1] {{Yes}}[2] Dynamic[3] {{Yes}}[4] {{dunno}} {{No}}[5] {{dunno}} {{Yes}}[6]
Scheme {{No}}[7] {{No}}[7] Dynamic[7] {{Yes}}[8] {{No}} native support[9] {{No}}[10] {{dunno}} {{Yes}}[11]
Clojure {{No}}[12] {{Yes}}[13] Dynamic[14] {{Yes}}[15] {{Yes}}[16] {{Yes}}[17] {{dunno}} {{yes}}[18]
ML {{No}}[19] {{No}}[20][21] Static[22] {{dunno}} {{dunno}} {{Yes}}[23] {{dunno}} {{dunno}}
Lazy ML {{Yes}}[24] {{Yes}}[24] Static[25] {{dunno}} {{dunno}} {{yes2}}Yes, by extension from ML[23] {{dunno}} {{dunno}}
OCaml {{No}}[26] {{yes2}}Yes, by using the Lazy module[26] Static[27] {{Yes}}[28] {{Yes}}[29] {{Yes}}[30] {{dunno}} {{Yes}}[26]
F# {{No}}[31] {{Yes}}[32] Static[33] {{dunno}} title=Discriminated Unions|url=https://msdn.microsoft.com/en-us/library/dd233226.aspx}} {{yes2}}Default[34] {{dunno}} {{Yes}}[35]
Haskell {{Yes}}[36] {{Yes}}[37] Static[38] {{Yes}}[36] {{Yes}}[39] {{Yes}}[40] {{Yes}}[41] {{Yes}}[42]
Frege {{Yes}}[43] {{Yes}}[43] Static[43]{{Yes}}[43] {{Yes}}[43] {{Yes}}[43] {{Yes}}[43] {{Yes}}[43]
Scala {{No}}[44] {{yes2}}Yes, with the lazy keyword[45] Static[44] {{Yes}}[46] {{Yes}}[46] {{yes2}}Default[47] {{Yes}}[48] {{Yes}}[46]
JavaScript [49]{{unreliable source?>date=March 2015}} {{yes2}}Yes, with extension[50] Dynamic[51] {{yes2}}Yes, with extension[52] {{yes2}}Yes, with extension[53] {{partial}}[54][55] {{dunno}} {{Yes}}[56]
Clean {{Yes}}[57] {{Yes}}, with optional strictness annotations[58] Static with uniqueness/optionally dynamic[59] {{Yes}}[58] {{Yes}}[58] {{Yes}}, except for unique types[58] {{Yes}}[58] {{Yes}}[58]
Miranda {{Yes}}[60] {{Yes}}[61] Static[60] {{Yes}}[62] {{Yes}}[60] {{dunno}} {{dunno}} {{dunno}}
SASL {{Yes}}[63] {{dunno}} Dynamic[64] {{dunno}} {{dunno}} {{dunno}} {{dunno}} {{dunno}}
Elixir {{No}} {{Yes2}}Yes, with the Stream module[65] Dynamic {{Dunno}} {{Dunno}} {{Yes}} {{No}} {{Yes}}
Erlang {{No}} {{No}}[66] Dynamic {{Yes}}[67] {{partial}}, only tuples and records[68] {{Yes}}[69] {{No}} {{Yes}}
Elm {{Yes}} {{No}} Static[70] {{dunno}} {{Yes}}[71] {{Yes}}[70] {{No}} {{Yes}}[72]
Python {{No}}[73] {{partial}} (simulated using generators)[74] Dynamic[75] {{Yes}}[76] {{dunno}} {{partial}}[77] {{Yes}}[78] {{Yes}}[79]
Candle {{Yes}}[80] {{dunno}} Dynamic[81] {{dunno}} {{partial}}, only Sequence and Map[82] {{partial}}[83] {{dunno}} {{dunno}}
Idris {{Yes}}[84] {{Yes}}[84] Static[84] {{Yes}}[84] {{Yes}}[84] {{Yes}}[84] {{Yes}}[84] {{Yes}}[84]
KotlinNoYes (using Delegation)StaticYesPartial, only Sequence and MapDefaultYesYes

References

1. ^{{cite web|title=LISP Introduction|url=http://www.math-cs.gordon.edu/courses/cps323/LISP/lisp.html|accessdate=26 November 2013}}
2. ^{{cite web|last=Antoniotti|first=Marco|title=CLAZY: Lazy Calling in Common Lisp|url=http://common-lisp.net/project/clazy/|accessdate=26 November 2013}}
3. ^{{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/|accessdate=26 November 2013|doi=10.1016/s0065-2458(09)01205-4}}
4. ^{{cite web|title=LISP Tutorial Lecture 3: Data Abstraction|url=http://www.cs.sfu.ca/CourseCentral/310/pwfong/Lisp/3/tutorial3.html}}
5. ^{{cite web|title=Mutable Data Structures|url=http://caml.inria.fr/pub/docs/fpcl/fpcl-07.pdf|accessdate=28 November 2013}}
6. ^{{cite web|title=Closures in Lisp|url=http://psg.com/~dlamkins/sl/chapter15.html|accessdate=6 December 2013}}
7. ^{{cite web|title=Similar Functional Languages|url=http://caml.inria.fr/pub/docs/oreilly-book/html/book-ora202.html|accessdate=26 November 2013}}
8. ^{{cite web|title=Records and Object Orientation|url=http://ftp://ftp.cs.utexas.edu/.snapshot/hourly.0/pub/garbage/cs345/schintro-v13/schintro_133.html}}
9. ^{{cite web|title=Algebraic Data Types in Scheme|url=http://pavpanchekha.com/blog/adtscm.html|accessdate=29 November 2013}}
10. ^{{cite web|title=Programs with State|url=http://www.cs.uni.edu/~wallingf/teaching/cs3540/sessions/session26.html|accessdate=29 November 2013}}
11. ^{{cite web|title=Procedures as Closures in Scheme|url=http://icem-www.folkwang-hochschule.de/~finnendahl/cm_kurse/doc/schintro/schintro_122.html#SEC152}}
12. ^{{cite web|title=Clojure Functional Programing|url=http://clojure.org/functional_programming}}
13. ^{{cite web|title=Clojure - lazy|url=http://clojure.org/lazy|accessdate=27 November 2013}}
14. ^{{cite web|title=Exploring clojure: dynamic typing|url=http://tgoossens.wordpress.com/2012/12/07/dynamically-exploring-clojure/|accessdate=26 November 2013}}
15. ^{{cite web|last=Engelberg|first=Mark|title=Thoughts On Programming|url=http://programming-puzzler.blogspot.com/2009/04/adts-in-clojure.html|accessdate=26 November 2013}}
16. ^{{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|accessdate=26 November 2013}}
17. ^{{cite web|title=clojure: functional programming overview|url=http://clojure.org/functional_programming|accessdate=26 November 2013}}
18. ^{{cite web | title=Clojure - Higher Order Functions | url=https://clojure.org/guides/higher_order_functions}}
19. ^{{cite web|title=Introduction to Functional Programming|url=http://www.cl.cam.ac.uk/~jrh13/slides/funprog-jrh/l8.pdf|accessdate=26 November 2013}}
20. ^{{cite web|title=Lazy and Eager Evaluation|url=http://homepages.inf.ed.ac.uk/dts/fps/lecture-notes/lazy.pdf|accessdate=26 November 2013}}
21. ^{{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}}
22. ^Standard ML Programming/Types
23. ^{{cite web|title=Mutable and optional data|url=http://courses.cs.washington.edu/courses/cse341/04wi/lectures/08-ml-refs.html|accessdate=28 November 2013}}
24. ^{{cite web|title=The Interactive Lazy ML System|url=http://journals.cambridge.org/action/displayFulltext?type=1&fid=2585068&jid=JFP&volumeId=3&issueId=01&aid=1322252|accessdate=15 December 2013}}
25. ^{{cite web|title=A Compiler for Lazy ML|url=http://dl.acm.org/citation.cfm?id=800055.802038|accessdate=15 December 2013}}
26. ^{{cite web|title=Functional Programming – OCaml|url=http://ocaml.org/learn/tutorials/functional_programming.html|accessdate=26 November 2013}}
27. ^{{cite web|last=Hickey|first=Jason|title=Introduction to Objective Caml|url=http://files.metaprl.org/doc/ocaml-book.pdf|work=Section 2.4|publisher=Cambridge University Press|accessdate=26 November 2013|deadurl=yes|archiveurl=https://web.archive.org/web/20131002091023/http://files.metaprl.org/doc/ocaml-book.pdf|archivedate=2 October 2013|df=}}
28. ^{{cite web|title=Type and exception definitions|url=http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual016.html}}
29. ^{{cite web|url=http://ocaml.org/learn/description.html#DataTypes| title=Learn OCaml - Data Types}}
30. ^{{cite web|url=http://ocaml.org/learn/description.html#Imperativefeatures | title=Learn OCaml - Imperative Features}}
31. ^{{cite web | url=http://fsharpforfunandprofit.com/learning-fsharp/| accessdate=6 December 2013 | title=Learning F#}}
32. ^{{cite web|title=Lazy Computations (F#)|url=http://msdn.microsoft.com/en-us/library/vstudio/dd233247.aspx|publisher=Microsoft Developer Network|accessdate=26 November 2013}}
33. ^{{cite web|title=About F#|url=http://fsharp.org/about/index.html|accessdate=26 November 2013}}
34. ^{{cite web|title=The F# 3.0 Language Specification: 1.1.2 Making Data Simple|url=http://fsharp.org/about/files/spec.pdf|accessdate=26 November 2013}}
35. ^{{cite web|title=F# Closure reference|url=http://msdn.microsoft.com/en-us/library/vstudio/dd233186.aspx}}
36. ^{{cite web|title=Haskell Wiki|url=http://www.haskell.org|accessdate=26 November 2013}}
37. ^{{cite web|title=Haskell Wiki Lazy Evaluation|url=http://www.haskell.org/haskellwiki/Lazy_evaluation|accessdate=26 November 2013}}
38. ^{{cite web|title=Haskell Typing|url=http://www.haskell.org/haskellwiki/Typing|publisher=HaskellWiki|accessdate=26 November 2013}}
39. ^{{cite web|title=Haskell Wiki Abstract Data Type|url=http://www.haskell.org/haskellwiki/Abstract_data_type|accessdate=26 November 2013}}
40. ^{{cite web|url=http://www.haskell.org/haskellwiki/Functional_programming#Immutable_data|title=Haskell Wiki|accessdate=27 November 2013}}
41. ^{{cite web|url=http://www.haskell.org/tutorial/classes.html|title=Type Classes and Overloading}}
42. ^{{cite web|title=Haskell Wiki Closure|url=http://www.haskell.org/haskellwiki/Closures|accessdate=26 November 2013}}
43. ^{{cite web|url=https://github.com/Frege/frege.github.com/blob/master/doc/Language.pdf?raw=true|title=Frege Language Reference|accessdate=26 February 2014}}
44. ^{{cite web|title=Scala Overview|url=http://www.scala-lang.org/old/sites/default/files/linuxsoft_archives/docu/files/ScalaOverview.pdf|accessdate=26 November 2013}}
45. ^{{cite web|title=Scala by Example|url=http://www.scala-lang.org/docu/files/ScalaByExample.pdf|accessdate=26 November 2013}}
46. ^{{cite web|title=Scala Reference|url=http://www.scala-lang.org/files/archive/nightly/pdfs/ScalaReference.pdf|accessdate=26 November 2013}}
47. ^{{cite web|title=Mutable and Immutable Collections|url=http://docs.scala-lang.org/overviews/collections/overview.html|accessdate=26 November 2013}}
48. ^{{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|accessdate=29 November 2013}}
49. ^List of multi-paradigm programming languages#Language overview
50. ^{{cite web|last=Tao|first=Dan|title=Lazy.js|url=http://danieltao.com/lazy.js/|work=Dan Tao|accessdate=26 November 2013}}
51. ^{{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|accessdate=26 November 2013}}
52. ^{{cite web|last=Frank|first=Thomas|title=Add some klass to JavaScript|url=http://www.thomasfrank.se/klass.html|work=thomasfrank.com|accessdate=26 November 2013}}
53. ^{{cite web|last=Faubion|first=Nathan|title=ADT|url=https://npmjs.org/package/adt|work=NPM|publisher=Joyent, nodejitsu|accessdate=26 November 2013}}
54. ^Immutable object#JavaScript
55. ^{{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|accessdate=26 November 2013}}
56. ^{{cite web|title=Javascript Closures|url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures|accessdate=26 November 2013}}
57. ^{{cite web | url=http://clean.cs.ru.nl/FAQ | title=FAQ - Clean}}
58. ^{{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|accessdate=23 May 2018}}
59. ^{{cite web | url=http://clean.cs.ru.nl/Clean | title=Clean}}
60. ^{{cite web | url=http://miranda.org.uk/ | title=Miranda Official Website}}
61. ^{{cite web | url=http://www.cs.kent.ac.uk/people/staff/dat/miranda/Overview.html#Lazy | title=An Overview of Miranda}}
62. ^{{cite web | url=http://www.cs.kent.ac.uk/people/staff/dat/miranda/Overview.html#Abstract | title=An Overview of Miranda}}
63. ^Turner, D.A. "An Implementation of SASL". University of St. Andrews, Department of Computer Science Technical Report. TR/75/4.
64. ^{{cite book | url=https://books.google.com/books?id=W2baKp7710sC&pg=PA128&lpg=PA128&dq=sasl+dynamic+typing&source=bl&ots=vMOd1yey3T&sig=CJA4G4VddwReucv2UmMYDbAEETI&hl=en&sa=X&ei=9_CbUpuGItPdoATfwIL4Bg&ved=0CC4Q6AEwAQ#v=onepage&q=sasl%20dynamic%20typing&f=false | title=Kahn networks at the dawn of functional programming}}
65. ^{{cite web | url=https://hexdocs.pm/elixir/Stream.html | title=Stream - Elixir v.1.6.0}}
66. ^{{cite web | url=http://www.erlang.org/doc/reference_manual/expressions.html#id76539| accessdate=27 November 2013 | title=Erlang Reference Manual}}
67. ^{{cite web | url=http://www.erlang.org/eeps/eep-0029.html | title=Erlang Programming Language - Abstract Patterns}}
68. ^{{cite web | url=http://www.erlang.org/doc/reference_manual/data_types.html | title=Erlang Reference Manual - Data Types}}
69. ^{{cite web | url=https://stackoverflow.com/questions/2715517/how-do-i-modify-a-record-in-erlang | accessdate=15 December 2013 | title=Stack Overflow - How do I modify a record in erlang?}}
70. ^{{cite web | url=http://elm-lang.org/blog/Interactive-Programming.elm | accessdate=29 November 2013 | title=Elm Blog - Interactive Programming}}
71. ^{{cite web | url=http://elm-lang.org/learn/Syntax.elm#algebraic-data-types | accessdate=29 November 2013 | title=Elm Syntax - Algebraic Data Types}}
72. ^{{cite web | url=https://csmith111.gitbooks.io/functional-reactive-programming-with-elm/content/section2/ClosuresAndCurrying.html | title=Closures and Currying - Programming with Elm}}
73. ^{{cite web | url=https://docs.python.org/2/howto/functional.html | title=Functional Programming in Python}}
74. ^Lazy evaluation
75. ^{{cite web | url=https://docs.python.org/3/faq/general.html#what-is-python | title=What is Python?}}
76. ^{{cite web | url=http://www.cs.utexas.edu/~byoung/cs313e/slides5-adt.pdf | title=Abstract Data Types and Stacks}}
77. ^Immutable object#Python
78. ^{{cite web | url=https://docs.python.org/2/reference/datamodel.html | title=Data model}}
79. ^{{cite web | url=https://www.python.org/dev/peps/pep-3104/ | title=PEP 3104 -- Access to Names in Outer Spaces}}
80. ^{{cite web | url=http://www.candlescript.org/doc/candle-overview.htm | accessdate=30 November 2013 | title=Candle Overview}}
81. ^{{cite web | url=http://candlescript.org/doc/candle-overview.htm | title=Candle Overview}}
82. ^{{cite web | url=http://www.candlescript.org/doc/candle-data-model-reference.htm | accessdate=30 November 2013 | title=Candle Date Model Reference}}
83. ^{{cite web | url=http://candleapp.blogspot.com/2011/12/candles-procedural-design.html | accessdate=30 November 2013 | title=Candle's Procedural Design}}
84. ^{{cite web|title=Idris Overview|url=http://www.idris-lang.org/|accessdate=6 December 2013}}

2 : Functional languages|Programming language comparisons

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/14 3:24:12