Programmatura functionalis
Programmatura functionalis in scientia computatrali est paradigma programmandi, modus structurae et elementorum programmatum computatralium aedificandorum, qui computationem habet aestimationem functionum mathematicarum, et data statum mutantem et data mutabilia evitat. Quae est paradigma programmaturae declarativae, quod significat programmatura per expressiones efficitur. In codice functionali, exitialis functionis aestimatio dependet solum de argumentis quae in functionem imponuntur; ergo functio f bis appellata per eandem aestimationem pro argumento x eundem exitum f(x) quoque tempore generabit. Deletis effectibus adiunctis (mutatibus status quae in inputs functionum non dependent), mores programmatis facilius intelleguntur et praedicuntur, quod est unum ex propositis maximi momenti programmaturae functionalis.
Programmatura functionalis in calculo lambda condita est, in systemate formali annis 1930 evoluto ad computabilitatem, Entscheidungsproblem, definitionem functionum, adhibitionem functionum, et recursionem investigandam. Multae functionales linguae programmandi videri possunt lima calculi lambda. Programmatura logica, aliud paradigma programmaturae declarativum bene notum in relationibus conditur.[1]
Contra, programmatura imperativa statum mutat per iussa in lingua fontis, quorum simplicissimum est mera attributio. Programmatura imperativa functiones nihilominus habet, non sensu mathematico, sed sensu ad subordines pertinente. Eis esse possunt effectus laterales qui aestimationem status programmatis mutare possunt. Functiones aestimationibus redituris carentes ergo significationem habent. Quam ob causam, pelluciditate referentiali carent; hoc est, eadem expressio linguae varias aestimationes temporibus variis efficere potest, statum programmatis exsecutentis monstrantes.[2]
Linguae programmaturae functionalis, praecipue linguae pure functionales sicut Hope et Rex, plerumque in academia expressae sunt, potius quam in progressu programmaturae commercialis. Functionales autem linguae prominentes sicut Common Lisp, Scheme,[3] [4][5][6] Clojure,[7][8] lingua Wolframiana [9] (etiam Mathematica appellata), Racket, Erlang,[10][11][12] OCaml,[13][14] Haskell,[15][16] et F#[17][18] in adhibitionibus industrialibus et commercialibus a variissimis organizationibus adhibitae sunt. Programmatura functionalis etiam in nonnullis linguis programmandi in dominiis propriis, sicut J, K, Q ex Kx Systems (analysis pecuniaria), R (statistica), XQuery/XSLT (XML),[19][20] et Opal sustinetur. Linguae declarativae in dominio propriae late notae, sicut SQL et Lex/Yacc, nonnullis programmaturae functionalis elementis utuntur, praecipue cum aestimationes mutabiles evitent.[21]
Programmare modo functionali etiam effici potest in linguis pro programmatura functionali non praecipue designatis. Exempli gratia, Perl, lingua programmandi imperativa, est res libri qui rationem notionum programmandi functionalis adhibendarum enarrat.[22] Hoc etiam ad PHP linguam programmandi pertinet.[23] Linguae C# 3.0 et Java 8 constructa ad meliorem faciendum modum functionalem addiderunt.
Lingua Julia praebet facultates programmandi functionalis. Casus iucundus est Scala, quae modo functionali saepe scribitur, sed praesentia effectuum lateralium et status mutabilis eam in regione cana inter linguas imperativam et functionalem ponunt.
Notae
recensere- ↑ Hudak 1989.
- ↑ Hudak 1989.
- ↑ Clinger 1987.
- ↑ Hartheimer 1987.
- ↑ Kidd 2007.
- ↑ Cleis 2006.
- ↑ UseR 2006.
- ↑ Chambers.
- ↑ Wolfram 2015.
- ↑ Erlang.
- ↑ Armstrong 2007.
- ↑ Larson 2009:48.
- ↑ Minsky 2008.
- ↑ Leroy 2007.
- ↑ Haskell.
- ↑ Hudak 2007.
- ↑ Mansell 2008.
- ↑ Peake 2009.
- ↑ Novatchev.
- ↑ Mertz.
- ↑ Chamberlin et Boyce 1974.
- ↑ Dominus 2005.
- ↑ Holywell 2014.
Bibliographia
recensere- Abelson, Hal, et Gerald Jay Sussman. 1985. Structure and Interpretation of Computer Programs. Cantabrigiae Massachusettae: MIT Press.
- Armstrong, Joe. 2007. A history of Erlang. Third ACM SIGPLAN Conference on History of Programming Languages. Didacopoli.
- Chamberlin, Donald D., et Raymond F. Boyce. 1974. SEQUEL: A structured English query language. Proceedings of the 1974 ACM SIGFIDET, 249–264.
- Chambers, John M. 1998. Programming with Data: A Guide to the S Language. Springer Verlag. ISBN 978-0-387-98503-9.
- Cleis, Richard. 2006. "Scheme in Space." CUFP.
- Clinger, Will. 1987. MultiTasking and MacScheme. MacTech 3(12).
- Cousineau, Guy, et Michel Mauny. 1998. The Functional Approach to Programming. Cantabrigiae: Cambridge University Press.
- Curry, Haskell Brooks, Robert Feys, et William Craig. 1958. Combinatory Logic. Vol. I. Amstelodami: North-Holland Publishing Company.
- Curry, Haskell B., J. Roger Hindley, et Jonathan P. Seldin. 1972. Combinatory Logic. Vol. 2. Amstelodami: North Holland. ISBN 0-7204-2208-6.
- Dominus, Mark Jason. 2005. Higher-Order Perl. Morgan Kaufmann.
- Dominus, Mark J. 2005. Higher-Order Perl. Morgan Kaufmann. ISBN 1-55860-701-3.
- EDF Researchers. 2011. Sim-Diasca: a large-scale discrete event concurrent simulation engine in Erlang.
- Erlang. Who uses Erlang for product development? Frequently asked questions about Erlang. FAQ.
- Felleisen, Matthias, Robert Findler, Matthew Flatt, et Shriram Krishnamurthi. 2001. How to Design Programs. Cantabrigiae Massachusettae: MIT Press.
- Graham, Paul. 1996. ANSI Common LISP. Englewood Cliffs Novae Caesareae: Prentice Hall.
- Hartheimer, Anne. 1987. Programming a Text Editor in MacScheme+Toolsmith. MacTech 3(1).
- Haskell. Haskell in industry. Haskell Wiki.
- Holywell, Simon. 2014. Functional Programming in PHP. php[architect] [sic]. ISBN 978-1-940111-05-6.
- Hudak, Paul. 1989. Conception, evolution, and application of functional programming languages. Association for Computing Machinery Computing Surveys 21(3):359–411. PDF. doi:10.1145/72551.72554.
- Hudak, Paul, J. Hughes, S. P. Jones, et P. Wadler. 2007. A history of Haskell: being lazy with class. Third ACM SIGPLAN Conference on History of Programming Languages, Didacopoli, Iunio. doi:10.1145/1238844.1238856.
- Kidd, Eric. 2007. Terrorism Response Training in Scheme. CUFP 2007.
- Larson, Jim. 2009. Erlang for concurrent programming. Communications of the ACM 52(3). doi:10.1145/1467247.1467263.
- Leroy, Xavier. 2007. Some uses of Caml in Industry. CUFP. PDF.
- MacLennan, Bruce J. 1990. Functional Programming: Practice and Theory. Reading Massachusettae: Addison-Wesley. ISBN 0-201-13744-5.
- Mansell, Howard. 2008. Quantitative Finance in F#. CUFP.
- Mertz, David. XML Programming Paradigms (part four): Functional Programming approached to XML processing. IBM developerWorks.
- Minsky, Yaron, et Stephen Weeks. 2008. Caml Trading — experiences with functional programming on Wall Street.Journal of Functional Programming 18(4):553–564. doi:10.1017/S095679680800676X.
- Novatchev, Dimitre. The Functional Programming Language XSLT: A proof through examples. TopXML.
- O'Sullivan, Brian, Don Stewart, et John Goerzen. 2008. Real World Haskell. O'Reilly.
- Peake, Alex. 2009. The First Substantial Line of Business Application in F#. CUFP.
- Pratt, Terrence W., et Marvin V. Zelkowitz. 1996. Programming Languages: Design and Implementation. Ed. 3a. Englewood Cliffs Novae Caesareae: Prentice Hall.
- Racket. State-Based Scripting in Uncharted 2. PDF.
- Salus, Peter H. 1998. Functional and Logic Programming Languages. Handbook of Programming Languages, 4. Indianapoli: Macmillan Technical Publishing.
- Spiewak, Daniel. Implementing Persistent Vectors in Scala.
- Thompson, Simon. 1996. Haskell: The Craft of Functional Programming. Harlow Angliae: Addison-Wesley Longman Limited.
- Wolfram Language Guide: Functional Programming. 2015.
Nexus externi
recensere- Akhmechet, Slava.2006. "Functional Programming For The Rest of Us," www.defmacro.org
- Ford, Neal. 2012. "Functional thinking: Why functional programming is on the rise," www.ibm.com
- Mertz, David. Functional programming in Python: pars 1; pars 2; pars 3