Knowledge

Functional programming

Source 📝

1747:), or handled with SIMD instructions. It is also not easy to create their equally efficient general-purpose immutable counterparts. For purely functional languages, the worst-case slowdown is logarithmic in the number of memory cells used, because mutable memory can be represented by a purely functional data structure with logarithmic access time (such as a balanced tree). However, such slowdowns are not universal. For programs that perform intensive numerical computations, functional languages such as 1697:. Monads offer a way to abstract certain types of computational patterns, including (but not limited to) modeling of computations with mutable state (and other side effects such as I/O) in an imperative manner without losing purity. While existing monads may be easy to apply in a program, given appropriate templates and examples, many students find them difficult to understand conceptually, e.g., when asked to define new monads (which is sometimes needed for certain types of libraries). 3210: 7176: 1016:). As a consequence, these languages fail to be Turing complete and expressing certain functions in them is impossible, but they can still express a wide class of interesting computations while avoiding the problems introduced by unrestricted recursion. Functional programming limited to well-founded recursion with a few other constraints is called 2981:, strict-evaluation functional programming system. However, spreadsheets generally lack higher-order functions as well as code reuse, and in some implementations, also lack recursion. Several extensions have been developed for spreadsheet programs to enable higher-order and reusable functions, but so far remain primarily academic in nature. 1375:, a property of keeping previous versions of the data structure unmodified. In Clojure, persistent data structures are used as functional alternatives to their imperative counterparts. Persistent vectors, for example, use trees for partial updating. Calling the insert method will result in some but not all nodes being created. 1394:
Higher-order functions are rarely used in older imperative programming. A traditional imperative program might use a loop to traverse and modify a list. A functional program, on the other hand, would probably use a higher-order "map" function that takes a function and a list, generating and returning
877:
While most compilers for imperative programming languages detect pure functions and perform common-subexpression elimination for pure function calls, they cannot always do this for pre-compiled libraries, which generally do not expose this information, thus preventing optimizations that involve those
794:
in that higher-order functions and first-class functions both allow functions as arguments and results of other functions. The distinction between the two is subtle: "higher-order" describes a mathematical concept of functions that operate on other functions, while "first-class" is a computer science
6276:
The Object.freeze() method freezes an object. A frozen object can no longer be changed; freezing an object prevents new properties from being added to it, existing properties from being removed, prevents changing the enumerability, configurability, or writability of existing properties, and prevents
942:
language standard requires implementations to support proper tail recursion, meaning they must allow an unbounded number of active tail calls. Proper tail recursion is not simply an optimization; it is a language feature that assures users that they can use recursion to express a loop and doing so
1228:
Functional programs do not have assignment statements, that is, the value of a variable in a functional program never changes once defined. This eliminates any chances of side effects because any variable can be replaced with its actual value at any point of execution. So, functional programs are
1052:
fails under strict evaluation because of the division by zero in the third element of the list. Under lazy evaluation, the length function returns the value 4 (i.e., the number of items in the list), since evaluating it does not attempt to evaluate the terms making up the list. In brief, strict
1862:
2008 give some practical advice for analyzing and fixing them. However, the most general implementations of lazy evaluation making extensive use of dereferenced code and data perform poorly on modern processors with deep pipelines and multi-level caches (where a cache miss may cost hundreds of
2279:
can be viewed as a generalisation of functional programming, in which functions are a special case of relations. For example, the function, mother(X) = Y, (every X has only one mother Y) can be represented by the relation mother(X, Y). Whereas functions have a strict input-output pattern of
448:, which amounts to a function that accepts a function as an argument, and, since it is an assembly-level language, code can be data, so IPL can be regarded as having higher-order functions. However, it relies heavily on the mutating list structure and similar imperative features. 5674: 1743:. This is related to the fact that some mutable data structures like arrays have a very straightforward implementation using present hardware. Flat arrays may be accessed very efficiently with deeply pipelined CPUs, prefetched efficiently through caches (with no complex 943:
would be safe-for-space. Moreover, contrary to its name, it accounts for all tail calls, not just tail recursion. While proper tail recursion is usually implemented by turning code into imperative loops, implementations might implement it in other ways. For example,
2231:, anonymous classes can sometimes be used to simulate closures; however, anonymous classes are not always proper replacements to closures because they have more limited capabilities. Java 8 supports lambda expressions as a replacement for some anonymous classes. 1827:
classes are implemented, where some of them are immutable variants of the corresponding classes that are not suitable for concurrent use. Functional programming languages often have a concurrency model that instead of shared state and synchronization, leverages
1681:
There are tasks (for example, maintaining a bank account balance) that often seem most naturally implemented with state. Pure functional programming performs these tasks, and I/O tasks such as accepting user input and printing to the screen, in a different way.
795:
term for programming language entities that have no restriction on their use (thus first-class functions can appear anywhere in the program that other first-class entities like numbers can, including as arguments to other functions and as their return values).
543:
Style? A Functional Style and its Algebra of Programs". He defines functional programs as being built up in a hierarchical way by means of "combining forms" that allow an "algebra of programs"; in modern language, this means that functional programs follow the
3149:
Functional "platforms" have been popular in finance for risk analytics (particularly with large investment banks). Risk factors are coded as functions that form interdependent graphs (categories) to measure correlations in market shifts, similar in manner to
6303:
A. Casas, D. Cabeza, M. V. Hermenegildo. A Syntactic Approach to Combining Functional Notation, Lazy Evaluation and Higher-Order in LP Systems. The 8th International Symposium on Functional and Logic Programming (FLOPS'06), pages 142-162, April
1708:, for example, uses managed references that can be updated by applying pure functions to the current state. This kind of approach enables mutability while still promoting the use of pure functions as the preferred way to express computations. 1700:
Functional languages also simulate states by passing around immutable states. This can be done by making a function accept the state as one of its parameters, and return a new state together with the result, leaving the old state unchanged.
1082:, by easing independent implementation of producers and consumers of data streams. Launchbury 1993 describes some difficulties that lazy evaluation introduces, particularly in analyzing a program's storage requirements, and proposes an 5678: 184:, a formal system of computation based only on functions. Functional programming has historically been less popular than imperative programming, but many functional languages are seeing use today in industry and education, including 2238:, anonymous classes are not necessary, because closures and lambdas are fully supported. Libraries and language extensions for immutable data structures are being developed to aid programming in the functional style in C#. 1664:
Sometimes the abstractions offered by functional programming might lead to development of more robust code that avoids certain issues that might arise when building upon large amount of complex, imperative code, such as
7166: 2267:
Similarly, the idea of immutable data from functional programming is often included in imperative programming languages, for example the tuple in Python, which is an immutable array, and Object.freeze() in JavaScript.
868:
If the entire language does not allow side-effects, then any evaluation strategy can be used; this gives the compiler freedom to reorder or combine the evaluation of expressions in a program (for example, using
806:, a technique that applies a function to its arguments one at a time, with each application returning a new function that accepts the next argument. This lets a programmer succinctly express, for example, the 2549:
Compared with relational syntax, functional syntax is a more compact notation for nested functions. For example, the definition of maternal grandmother in functional syntax can be written in the nested form:
1053:
evaluation always fully evaluates function arguments before invoking the function. Lazy evaluation does not evaluate function arguments unless their values are required to evaluate the function call itself.
157:, which can have side effects (such as modifying the program's state or taking input from a user). Proponents of purely functional programming claim that by restricting side effects, programs can have fewer 927:, which consumes space in a linear amount to the depth of recursion. This could make recursion prohibitively expensive to use instead of imperative loops. However, a special form of recursion known as 931:
can be recognized and optimized by a compiler into the same code used to implement iteration in imperative languages. Tail recursion optimization can be implemented by transforming the program into
7164: 5497: 228:
is a functional programming language commonly used for verifying mathematical theorems. Functional programming is also key to some languages that have found success in specific domains, like
1782:
Immutability of data can in many cases lead to execution efficiency by allowing the compiler to make assumptions that are unsafe in an imperative language, thus increasing opportunities for
689:
framework, although its restriction on reassigning values (all values are treated as constants) has led to confusion among users who are unfamiliar with functional programming as a concept.
1786:. Even if the involved copying that may seem implicit when dealing with persistent immutable data structures might seem computationally costly, some functional programming languages, like 3185:
Outside of computer science, functional programming is used to teach problem-solving, algebraic and geometric concepts. It has also been used to teach classical mechanics, as in the book
6277:
the values of existing properties from being changed. In addition, freezing an object also prevents its prototype from being changed. freeze() returns the same object that was passed in.
1128:
makes manipulation of complex data structures convenient; the presence of strong compile-time type checking makes programs more reliable in absence of other reliability techniques like
2074:
method, has a mean execution time of 2.8 μs – roughly 1700 times faster. Part of that can be attributed to the type checking and exception handling involved in the implementation of
7372: 4865:
R.M. Burstall. Design considerations for a functional programming language. Invited paper, Proc. Infotech State of the Art Conf. "The Software Revolution", Copenhagen, 45–57 (1977)
7136: 7125: 1046:
of expressions containing failing or divergent computations. Under strict evaluation, the evaluation of any term containing a failing subterm fails. For example, the expression:
587:
and was first introduced in their work on program transformation. Burstall, MacQueen and Sannella then incorporated the polymorphic type checking from ML to produce the language
7165: 1202:(GADT's) can be implemented in a way that provides some of the benefits of dependently typed programming while avoiding most of its inconvenience. GADT's are available in the 708:). However, programming languages often cater to several programming paradigms, so programmers using "mostly imperative" languages may have utilized some of these concepts. 1391:, which are used in imperative programming to implement state and I/O. Pure functional programming completely prevents side-effects and provides referential transparency. 1163:. These type systems do not have decidable type inference and are difficult to understand and program with. But dependent types can express arbitrary propositions in 4283: 1086:
to aid in such analysis. Harper 2009 proposes including both strict and lazy evaluation in the same language, using the language's type system to distinguish them.
8119: 761: 5582: 4874:
R.M. Burstall and J. Darlington. A transformation system for developing recursive programs. Journal of the Association for Computing Machinery 24(1):44–67 (1977)
2224:
and lambdas are fully supported. Libraries and language extensions for immutable data structures are being developed to aid programming in the functional style.
785: 7278: 7342: 2955: 3805:
Haskell has a diverse range of use commercially, from aerospace and defense, to finance, to web startups, hardware design firms and lawnmower manufacturers.
276:. In addition, many other programming languages support programming in a functional style or have implemented features from functional programming, such as 7012: 5644: 4916: 4208: 3390: 5462: 3187: 7291: 3736: 2998: 2924:
Ciao transforms the function-like notation into relational form and executes the resulting logic program using the standard Prolog execution strategy.
6443: 1744: 729:
are functions that can either take other functions as arguments or return them as results. In calculus, an example of a higher-order function is the
620: 4893: 842:
If a pure function is called with arguments that cause no side-effects, the result is constant with respect to that argument list (sometimes called
3092:, though initially intended as a research language, has also been applied in areas such as aerospace systems, hardware design and web programming. 2143:
It is possible to use a functional style of programming in languages that are not traditionally considered functional languages. For example, both
17: 1042:
evaluation, concepts that refer to how function arguments are processed when an expression is being evaluated. The technical difference is in the
4883:
R.M. Burstall, D.B. MacQueen and D.T. Sannella. HOPE: an experimental applicative language. Proc. 1980 LISP Conference, Stanford, 136–143 (1980).
6363: 3277: 966:(or "folds" and "unfolds") being the most obvious examples. Such recursion schemes play a role analogous to built-in control structures such as 7441: 3538: 6486: 6046: 6021: 1407:) achieve the same effect: they multiply all even numbers in an array by 10 and add them all, storing the final sum in the variable "result". 1117: 1109: 7376: 6042: 3891: 3006: 2127:
instruction, without the overhead of the loop controlling code. If an iterative operation writes to an array, the resulting array's elements
1879:" as efficiently as the underlying imperative operations. Consider, as an example, the following two ways to check if 5 is an even number in 4952: 4628:
automatically. To accomplish this, they had to invent a language and a paradigm that, viewed retrospectively, embeds functional programming.
3182:
teach functional programming. Some treat it as an introductory programming concept while others first teach imperative programming methods.
8112: 6424: 6726: 1355:
with constant access and update times is a basic component of most imperative languages, and many imperative data-structures, such as the
850:), i.e., calling the pure function again with the same arguments returns the same result. (This can enable caching optimizations such as 141:. When a pure function is called with some given arguments, it will always return the same result, and cannot be affected by any mutable 1854:
may also speed up the program, even asymptotically, whereas it may slow it down at most by a constant factor (however, it may introduce
7271: 6580: 5431: 4937: 3860: 1819:
programming by the virtue of reducing or eliminating the risk of certain concurrency hazards, since concurrent operations are usually
3458: 3155: 6504: 7505: 3509: 3238: 495: 245: 5972: 955:
will claim space back, allowing an unbounded number of active tail calls even though it does not turn tail recursion into a loop.
8105: 7855: 7717: 6261: 4618:
claims that he, Al Newell, and Cliff Shaw are "...commonly adjudged to be the parents of artificial intelligence ," for writing
3427: 54: 3754: 835:(memory or I/O). This means that pure functions have several useful properties, many of which can be used to optimize the code: 8212: 8202: 7861: 6470: 1858:
if used improperly). Launchbury 1993 discusses theoretical issues related to memory leaks from lazy evaluation, and O'Sullivan
5119: 8260: 8217: 8207: 8197: 7264: 7085: 7024: 5864: 5620: 4579: 4166: 4009: 3243: 1756: 952: 403: 8174: 8046: 7794: 4309: 1124:), as they reject all invalid programs at runtime when the information is enough to not reject valid programs. The use of 6187: 5440: 5229: 5201: 4801: 4754: 4707: 4287: 3699:
Minsky, Yaron; Weeks, Stephen (July 2008). "Caml Trading — experiences with functional programming on Wall Street".
487: 6130: 5319:
Wells, J. B. (1993). "Typability and type checking in the second-order lambda-calculus are equivalent and undecidable".
7514: 7181: 6245: 5225: 5056: 4512: 4477: 399: 857:
If there is no data dependency between two pure expressions, their order can be reversed, or they can be performed in
6639: 5515: 5484: 5456: 5144: 4982: 4615: 4191: 3616: 3002: 2245: 1836:, where each actor is a container for state, behavior, child actors and a message queue). This approach is common in 1404: 1101: 568: 467: 4677:
Diehl, Stephan; Hartel, Pieter; Sestoft, Peter (2000). "Abstract machines for programming language implementation".
4341: 8189: 7886: 7566: 7510: 6853: 3335: 3233: 2119:. This means that using them imposes no additional runtime overhead. This is achieved thanks to the compiler using 1338: 882:, add extra keywords for a programmer to explicitly mark external functions as pure, to enable such optimizations. 870: 99: 4124: 2280:
arguments, relations can be queried with any pattern of inputs and outputs. Consider the following logic program:
360:. Lambda calculus forms the basis of all functional programming languages. An equivalent theoretical formulation, 8278: 8169: 7746: 7619: 7550: 7485: 7408: 5806: 3228: 1199: 944: 437: 395: 387: 95: 6821: 5652: 4215: 8283: 8249: 8164: 7924: 7687: 7317: 5094: 3402: 3357: 3100: 2235: 2202: 2186: 1876: 1690: 1388: 1326: 1152: 1148: 1061: 832: 663: 410:
functions. Lisp first introduced many paradigmatic features of functional programming, though early Lisps were
281: 221: 146: 5880: 4026: 8179: 7702: 7692: 7470: 3253: 3195: 3132: 3053: 3018: 2210: 2162: 1841: 1837: 1740: 1121: 939: 611: 584: 545: 415: 414:, and incorporated support for numerous programming styles as new paradigms evolved. Later dialects, such as 297: 285: 209: 205: 201: 189: 126: 69: 6750: 2193:
standard library module. First-class functions have been introduced into other mainstream languages such as
406:(MIT). Lisp functions were defined using Church's lambda notation, extended with a label construct to allow 8086: 8066: 7996: 7939: 7901: 7891: 7851: 7776: 7712: 7682: 7609: 7598: 7495: 7475: 7450: 7413: 5079:
Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation - PLDI '98
3163: 3096: 2261: 2182: 1871:
Some functional programming languages might not optimize abstractions such as higher order functions like "
1802: 1752: 1211: 1168: 1065: 1017: 920: 916: 903: 427: 423: 407: 376: 313: 150: 80: 6449: 4835:"Can programming be liberated from the von Neumann style?: A functional style and its algebra of programs" 3918:
de Moura, Leonardo; Ullrich, Sebastian (July 2021). "The Lean 4 Theorem Prover and Programming Language".
434:
was designed to preserve and update the paradigmatic features of the numerous older dialects it replaced.
411: 8041: 7804: 7771: 7666: 7642: 7604: 7584: 7480: 7389: 7367: 7352: 6173:
The SICS Java Port Project Automatic Translation of a Large Object Oriented System from Smalltalk to Java
5831:"Understanding The Actor Model To Build Non-blocking, High-throughput Distributed Systems - Scaleyourapp" 5177: 4901: 3488: 3215: 3108: 3057: 2990: 2674: 2228: 2178: 2112: 2071: 1872: 1812: 1798: 1329:. Functional programs exclusively use this type of function and are therefore referentially transparent. 705: 656: 588: 572: 391: 317: 309: 305: 57: 8238: 7988: 7974: 7881: 7841: 7766: 7672: 7652: 7519: 7398: 7332: 6990: 6796: 5758: 5528: 5507: 3997: 3124: 3045: 2221: 2158: 1156: 932: 640: 580: 549: 455: 6150: 5563:"All About Monads: A comprehensive guide to the theory and practice of monadic programming in Haskell" 3076:, which was introduced in the mid-1990s, has seen commercial use in areas such as financial analysis, 2123:, where each iteration of a loop, be it imperative or using iterators, is converted into a standalone 839:
If the result of a pure expression is not used, it can be removed without affecting other expressions.
440:(IPL), 1956, is sometimes cited as the first computer-based functional programming language. It is an 8081: 7846: 7756: 7736: 7722: 7200: 6218: 5364: 4792: 4745: 4698: 3308: 2166: 2085: 1670: 1372: 1013: 861:
and they cannot interfere with one another (in other terms, the evaluation of any pure expression is
556: 532: 475: 301: 6483: 5734: 5035: 3545: 700:
A number of concepts and paradigms are specific to functional programming, and generally foreign to
8061: 8021: 7964: 7896: 7634: 7465: 6029: 5329: 4653: 2253: 2144: 2088:, which implements various higher-order functions common in functional programming languages using 1776: 1772: 1736: 1233: 1223: 1203: 1192: 843: 576: 540: 491: 483: 241: 237: 233: 142: 84: 73: 4258: 3897: 3017:
Functional programming has been employed in a wide range of industrial applications. For example,
8071: 8051: 7992: 7979: 7959: 7786: 7523: 7427: 7385: 7256: 7106: 6940: 4095: 1732: 1129: 1113: 879: 564: 111: 61: 6428: 6059: 5406: 3036:
systems, but has since become popular for building a range of applications at companies such as
8031: 8006: 8000: 7944: 7906: 7594: 7589: 7541: 7337: 7309: 7300: 7251: 7247: 7243: 6506:
Scala at EDF Trading: Implementing a Domain-Specific Language for Derivative Pricing with Scala
5324: 1384: 1364: 1348: 1280:
referentially transparent. In fact, assignment statements are never referentially transparent.
1180: 1079: 1043: 701: 629: 225: 154: 134: 77: 31: 5782: 7933: 7929: 7871: 7823: 7393: 5148: 4624: 3730: 2978: 1144: 1105: 1083: 730: 726: 721: 678: 65: 6586: 4049:"XML Programming Paradigms (part four): Functional Programming approached to XML processing" 3952: 1704:
Impure functional languages usually include a more direct method of managing mutable state.
1136:
frees the programmer from the need to manually declare types to the compiler in most cases.
579:. Also in Edinburgh in the 1970s, Burstall and Darlington developed the functional language 8157: 8128: 8076: 8056: 8016: 7818: 7677: 7546: 7533: 7287: 7196: 5807:"Concurrent Collections (The Java™ Tutorials > Essential Java Classes > Concurrency)" 5699:
Igor Pechtchanski; Vivek Sarkar (2005). "Immutability specification and its applications".
4644: 4516: 4073: 3866: 3831:. Third ACM SIGPLAN Conference on History of Programming Languages. San Diego, California. 3603:. Third ACM SIGPLAN Conference on History of Programming Languages. San Diego, California. 2959: 2170: 1942: 1760: 1352: 1009: 989: 977:
Most general purpose functional programming languages allow unrestricted recursion and are
971: 791: 717: 674:
for functional programming research; implementation releases have been ongoing as of 1990.
345: 130: 50: 46: 7035: 6915: 6338: 5947: 4048: 3464: 3135:'s Phoenix framework is also used by some relatively popular commercial projects, such as 2323:
The program can be queried, like a functional program, to generate mothers from children:
1952:
version 22 and Clojure version 1.11.1, the first implementation, which is implemented as:
1719:
have been developed to track side effects in programs. Some modern research languages use
1012:(nonterminating computations can be expressed only with infinite streams of values called 735: 365: 8: 8011: 7949: 7761: 7741: 7727: 7459: 7327: 7322: 6774: 6510: 6425:"Improving the world's most popular functional language: user-defined functions in Excel" 5382: 3790: 3065: 2189:" in 1994, as well as closures in Python 2.2, though Python 3 relegated "reduce" to the 2128: 2089: 1387:. The most significant differences stem from the fact that functional programming avoids 1176: 1125: 1029: 985: 799: 170: 119: 91: 6493:// WhatsApp blog, 2012-01-06: "the last important piece of our infrastracture is Erlang" 3517: 548:. Backus's paper popularized research into functional programming, though it emphasized 7828: 7781: 7751: 7697: 7556: 7455: 7347: 6972: 6849: 6608: 6412: 6394: 6003: 5995: 5716: 5100: 4815: 4768: 4721: 4585: 4539: 4517:"Recursive functions of symbolic expressions and their computation by machine, Part I." 4459: 4451: 4406: 4386: 4378: 4148: 3718: 3658: 3300: 3033: 2174: 1816: 1172: 1164: 958:
Common patterns of recursion can be abstracted away using higher-order functions, with
807: 770: 648: 607: 451: 5268: 4259:"Functional Language Features: Iterators and Closures - The Rust Programming Language" 3826: 3572: 3433: 666:, developed by David Turner, initially appeared in 1985 and had a strong influence on 8152: 8147: 7984: 7876: 7731: 7707: 7647: 7614: 7576: 7561: 7500: 7081: 7047:
Felleisen, Matthias; Findler, Robert; Flatt, Matthew; Krishnamurthi, Shriram (2018).
7020: 6635: 6386: 6241: 5860: 5616: 5511: 5452: 5360: 5090: 4611: 4575: 4187: 4162: 4152: 4005: 3933: 3763: 3612: 3339: 3304: 3085: 2590:
The same definition in relational notation needs to be written in the unnested form:
2276: 2124: 2101: 1768: 1060:. Lazy evaluation is used by default in several pure functional languages, including 463: 441: 361: 6894: 6398: 6288: 6234: 5999: 5720: 5477: 5298: 5104: 4819: 4772: 4589: 4463: 4342:"Documentation for package java.util.function since Java 8 (also known as Java 1.8)" 3722: 670:. With Miranda being proprietary, Haskell began with a consensus in 1987 to form an 636: 7866: 7798: 7662: 7403: 7008: 6553: 6416: 6378: 6126: 5987: 5708: 5606: 5444: 5264: 5205: 5160: 5123: 5082: 4846: 4805: 4758: 4725: 4711: 4657: 4603: 4567: 4543: 4531: 4494: 4443: 4390: 4370: 4077: 3923: 3832: 3708: 3648: 3604: 3601:
Proceedings of the third ACM SIGPLAN conference on History of programming languages
3292: 3223: 3140: 3104: 2949: 2944:
for writing plugins. The original author of the most popular Emacs implementation,
2249: 1801:
distinguishes itself by its approach to data immutability which involves immutable
1783: 1666: 1078:
argues for lazy evaluation as a mechanism for improving program modularity through
659:
and has influenced the development of subsequent functional programming languages.
510: 197: 166: 38: 5255:
Huet, Gérard P. (1973). "The Undecidability of Unification in Third Order Logic".
3976: 3662: 3151: 1179:. While these languages are mainly of interest in academic research (including in 591:. ML eventually developed into several dialects, the most common of which are now 552:
rather than the lambda-calculus style now associated with functional programming.
430:, sought to simplify and rationalise Lisp around a cleanly functional core, while 8097: 7916: 7790: 7656: 7357: 7040: 6490: 6471:"Sim-Diasca: a large-scale discrete event concurrent simulation engine in Erlang" 5610: 5562: 5193: 5024:. International Organization for Standardization. July 6, 2017. pp. 336–338. 4987: 4481: 4158: 3928: 3248: 3167: 3077: 3061: 3030: 2242: 2217: 2132: 1966:"Returns true if n is even, throws an exception if n is not an integer" 1851: 1829: 1820: 1716: 1694: 1057: 1056:
The usual implementation strategy for lazy evaluation in functional languages is
982: 978: 858: 518: 357: 353: 329: 181: 5200:. Symposium on Principles of Programming Languages. Charleston, South Carolina: 5018: 4917:"Developers love trendy new languages but earn more with functional programming" 4317: 2673:
However, the difference between the two representations is simply syntactic. In
1214:, and have been proposed as additions to other languages including Java and C#. 1171:, then, well-typed programs in these languages become a means of writing formal 383:
to all terms. This forms the basis for statically typed functional programming.
7968: 7624: 7490: 6420: 6314: 4619: 3977:"The useR! 2006 conference schedule includes papers on the commercial use of R" 2198: 2120: 1845: 1367:
or random access lists, which admit purely functional implementation, but have
1344: 1325:
transparent, as it does not implicitly change the input x and thus has no such
1160: 1140: 1133: 1001: 948: 928: 811: 652: 494:, which is used commercially in financial industries along with its descendant 273: 265: 7210: 6382: 6112: 5991: 5358: 5238: 4558: 4240: 4101: 3713: 3143:(one of the biggest e-commerce platforms in Poland)'s classified ads platform 3131:
are some of the functional frontend programming languages used in production.
3095:
Other functional programming languages that have seen use in industry include
1731:
Functional programming languages are typically less efficient in their use of
8272: 7954: 7114: 7062: 7004: 6390: 6195: 6087: 5503: 5164: 4662: 4639: 4431: 3937: 3120: 1720: 993: 967: 828: 823: 671: 625: 615: 603: 369: 337: 333: 138: 115: 7225: 5948:"Comparing Performance: Loops vs. Iterators - The Rust Programming Language" 5448: 5019:"ISO/IEC JTC 1/SC 22/WG5/N2137 – Fortran 2015 Committee Draft (J3/17-007r2)" 4557:
Guy L. Steele; Richard P. Gabriel (February 1996). "The evolution of Lisp".
3836: 3653: 3636: 3608: 3278:"Conception, evolution, and application of functional programming languages" 2104:
profile, which can be attributed to various compiler optimizations, such as
1790:
solve this issue by implementing mechanisms for safe memory sharing between
8142: 6680: 5924:"Go Wiki: Compiler And Runtime Optimizations - The Go Programming Language" 4921: 4571: 3162:
variations in finance, these systems are sometimes considered related to a
3136: 3116: 2966:, which are also the core feature of the Lisp programming language family. 2963: 2677:
Prolog, relations can be nested, like functions in functional programming:
2257: 1930: 1005: 959: 560: 536: 506: 502: 158: 103: 7184:
was created from a revision of this article dated 25 August 2011
5345: 5210: 5086: 4993: 4851: 4834: 4810: 4787: 4763: 4740: 4716: 4693: 4535: 4498: 513:
for a functional programming language, described a correspondence between
356:
are equivalent models of computation, showing that the lambda calculus is
7836: 7096: 6968: 6845: 6727:"ALLEGRO - all you need to know about the best Polish online marketplace" 4741:"A correspondence between ALGOL 60 and Church's Lambda-notation: part II" 3198:
has been a relatively popular choice for teaching programming for years.
3112: 2994: 2974: 1855: 1833: 1712: 1360: 1095: 997: 963: 919:
invoke themselves, letting an operation be repeated until it reaches the
862: 851: 847: 596: 528: 471: 431: 349: 341: 185: 6874: 5859:(1st ed.). O'Reilly Media, Inc. (published 2009-06-11). p. 6. 5830: 3922:. Conference on Automated Deduction. Vol. 12699. pp. 625–635. 3296: 1823:
and this allows eliminating the need for locks. This is how for example
6151:"functools — Higher order functions and operations on callable objects" 5923: 5077:
Clinger, William (1998). "Proper tail recursion and space efficiency".
4455: 4382: 3822: 3273: 3179: 3128: 2941: 2154: 2148: 2064:
has the mean execution time of 4.76 ms, while the second one, in which
1356: 924: 883: 764: 229: 7124:. Vol. 4 of Handbook of Programming Languages. Indianapolis, Indiana: 6877:. Department of Electrical Engineering and Computer Sciences, Berkeley 6655: 5783:"Validating References with Lifetimes - The Rust Programming Language" 5675:"Which programs are fastest? | Computer Language Benchmarks Game" 4694:"Correspondence between ALGOL 60 and Church's Lambda-notation: part I" 2473:
It can even be used to generate all instances of the mother relation:
6532: 4957: 4027:"The Functional Programming Language XSLT — A proof through examples" 3069: 2997:
publication venues focusing on functional programming, including the
2989:
Functional programming is an active area of research in the field of
2945: 2138: 1368: 912: 908: 479: 380: 162: 107: 5712: 4447: 4374: 3209: 692:
Functional programming continues to be used in commercial settings.
6701: 6289:
Daniel Friedman; William Byrd; Oleg Kiselyov; Jason Hemann (2018).
5120:"CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A." 3049: 3041: 3026: 2105: 1764: 1188: 1184: 803: 682: 514: 177: 129:, a subset of functional programming which treats all functions as 7286: 7046: 5551:
Michael Barr, Charles Well - Category theory for computer science.
2248:
are expressible in functional programming terms: for example, the
1104:
in the 1970s, functional programming languages have tended to use
272:
use some elements of functional programming, such as not allowing
7078:
An Introduction to Functional Programming Through Lambda Calculus
6902: 5857:
Erlang programming: a concurrent approach to software development
5057:"Revised^6 Report on the Algorithmic Language Scheme - Rationale" 3089: 2206: 1880: 1787: 1705: 1686: 1108:, rejecting all invalid programs at compilation time and risking 1069: 667: 419: 277: 217: 193: 6976: 6857: 5529:"polymatheia - Understanding Clojure's Persistent Vector, pt. 1" 5433:
Generalized Algebraic Data Types and Object-Oriented Programming
1934: 1371:
access and update times. Purely functional data structures have
1116:, that accepts all valid programs at compilation time and risks 5902: 4556: 4403: 3037: 3022: 2081: 249: 125:
Functional programming is sometimes treated as synonymous with
7000:. Volume I. North-Holland Publishing Company, Amsterdam, 1958. 6073: 4241:"GopherCon 2020: Dylan Meeus - Functional Programming with Go" 4097:
Functional Programming with C# - Simon Painter - NDC Oslo 2020
911:(looping) in functional languages is usually accomplished via 27:
Programming paradigm based on applying and composing functions
6631: 5698: 3081: 3073: 2937: 1938: 1748: 1207: 592: 522: 213: 7094: 6411: 5970: 4971:
Sean Tull - Monoidal Categories for Formal Concept Analysis.
3064:
computers and has been applied to problems such as training-
1034:
Functional languages can be categorized by whether they use
677:
More recently it has found use in niches such as parametric
444:
for manipulating lists of symbols. It does have a notion of
6996:
Curry, Haskell Brooks and Feys, Robert and Craig, William.
6088:"First-Class Functions in Go - The Go Programming Language" 3676: 3159: 2092:. In a benchmark provided by the library's author, calling 1945: 1276:
gives a program a different meaning, and so the expression
686: 289: 269: 253: 94:, meaning that they can be bound to names (including local 5759:"References and Borrowing - The Rust Programming Language" 4361:
Turing, A. M. (1937). "Computability and λ-definability".
3060:, was used as the basis for several applications on early 2952:
considers Lisp one of his favorite programming languages.
1159:, which lets types depend on terms. Such types are called 6941:"What Is Scheme & Why Is it Beneficial for Students?" 5284:
Resolution d'Equations dans des Langages d'Ordre 1,2,...ω
3953:"An introduction to functional programming in JavaScript" 3154:
optimizations but also for regulatory frameworks such as
2194: 1949: 1811:
Immutable data with separation of identity and state and
711: 293: 261: 257: 3893:
The First Substantial Line of Business Application in F#
2252:
simply dictates use of a higher-order function, and the
1398: 647:
type theory), which associated functional programs with
7095:
O'Sullivan, Brian; Stewart, Don; Goerzen, John (2008).
5971:
Hartel, Pieter; Henk Muller; Hugh Glaser (March 2004).
4434:(1940). "A Formulation of the Simple Theory of Types". 4080:(1974). "SEQUEL: A structured English query language". 3483: 3481: 1395:
a new list by applying the function to each list item.
1378: 7226:"defmacro – Functional Programming For The Rest of Us" 7048: 6232:
Bloch, Joshua (2008). "Item 15: Minimize Mutability".
5180:. Simon Peyton Jones, published by Prentice Hall, 1987 5178:
The Implementation of Functional Programming Languages
4125:"Functional programming - Kotlin Programming Language" 3821: 2940:, a highly extensible text editor family uses its own 1183:), they have begun to be used in engineering as well. 1023: 6777:. University of Oxford Department of Computer Science 5036:"Revised^6 Report on the Algorithmic Language Scheme" 3885: 3883: 1815:
schemes can also potentially be more well-suited for
773: 738: 5701:
Concurrency and Computation: Practice and Experience
4953:"Is functional programming better for your startup?" 3825:; Hughes, J.; Jones, S. P.; Wadler, P. (June 2007). 3478: 3330: 3328: 3205: 3029:
in the late 1980s, was originally used to implement
1546:
Functional programming with higher-order functions:
1139:
Some research-oriented functional languages such as
379:, which extended the lambda calculus by assigning a 90:
In functional programming, functions are treated as
6477: 5430:Kennedy, Andrew; Russo, Claudio V. (October 2005). 5365:"Simple unification-based type inference for GADTs" 5028: 3785: 3783: 3599:Armstrong, Joe (June 2007). "A history of Erlang". 3188:
Structure and Interpretation of Classical Mechanics
1252:, then two consecutive evaluations of the variable 8127: 7003: 6233: 5677:. benchmarksgame.alioth.debian.org. Archived from 4676: 4405: 3880: 3391:"Programming a Text Editor in MacScheme+Toolsmith" 3166:. Functional programming is heavily influenced by 2999:International Conference on Functional Programming 2271: 2139:Functional programming in non-functional languages 1363:, are based on arrays. Arrays can be replaced by 1347:are often represented in a different way to their 1240:, this changes the value assigned to the variable 810:as the addition operator partially applied to the 779: 755: 632:, features that encourage functional programming. 490:, who had previously worked with Iverson, created 6978:Structure and Interpretation of Computer Programs 6859:Structure and Interpretation of Computer Programs 6799:. Imperial College London Department of Computing 6582:Functional Programming in Communications Security 5188: 5186: 3531: 3325: 621:Structure and Interpretation of Computer Programs 8270: 7111:Programming Languages: Design and Implementation 6816: 6814: 5854: 5308:. LNCS. Vol. 2410. Springer. pp. 3–12. 5306:Proceedings, 15th International Conference TPHOL 5224: 4066: 4002:Programming with Data: A Guide to the S Language 3780: 3594: 3592: 3510:"Functional vs. Procedural Programming Language" 3489:"Wolfram Language Guide: Functional Programming" 3384: 3382: 6888: 6751:"Websites using Phoenix Framework - Wappalyzer" 6609:"Live Production Clojure Application Announced" 5304:. In Carreño, V.; Muñoz, C.; Tahar, S. (eds.). 5231:Practical Foundations for Programming Languages 4302: 4072: 3917: 1723:to make the presence of side effects explicit. 923:. In general, recursion requires maintaining a 539:lecture "Can Programming Be Liberated From the 458:in the early 1960s, described in his 1962 book 118:style, where small functions are combined in a 6967: 6844: 5183: 4334: 4281: 4206: 3854: 3852: 3735:: CS1 maint: DOI inactive as of August 2024 ( 2173:from their inception. Python had support for " 1383:Functional programming is very different from 1195:that is written in Coq and formally verified. 790:Higher-order functions are closely related to 624:. Scheme was the first dialect of lisp to use 8113: 7272: 6811: 6355: 6060:"Functions — D Programming Language 2.0" 5855:Cesarini, Francesco; Thompson, Simon (2009). 5286:(Ph.D.) (in French). Universite de Paris VII. 4938:"The stealthy rise of functional programming" 4511: 3694: 3692: 3630: 3628: 3589: 3567: 3565: 3379: 3351: 3349: 3007:Symposium on Trends in Functional Programming 1755:are only slightly slower than C according to 1735:and memory than imperative languages such as 992:, and generally requires the introduction of 947:intentionally maintains a stack and lets the 260:. Domain-specific declarative languages like 110:can. This allows programs to be written in a 7133:Haskell: The Craft of Functional Programming 5429: 5359:Peyton Jones, Simon; Vytiniotis, Dimitrios; 5013: 5011: 4935: 4914: 3817: 3815: 3813: 3748: 3746: 878:external functions. Some compilers, such as 375:Church later developed a weaker system, the 7070:Functional Programming: Practice and Theory 6872: 6789: 6463: 6131:"Origins of Python's "Functional" Features" 4826: 3849: 3828:A history of Haskell: being lazy with class 3698: 3452: 3450: 3115:and Clojure. Scala has been widely used in 1217: 996:into the logic expressed by the language's 76:to other values, rather than a sequence of 64:paradigm in which function definitions are 8120: 8106: 7279: 7265: 7122:Functional and Logic Programming Languages 7075: 7019:. Vol. II. Amsterdam: North Holland. 6916:"Why Scheme for Introductory Programming?" 6125: 6022:"Functional programming in Python, Part 3" 5645:"Implementing Persistent Vectors in Scala" 5192: 4950: 4640:"The mechanical evaluation of expressions" 4404:Haskell Brooks Curry; Robert Feys (1958). 4369:(4). Cambridge University Press: 153–163. 4284:"Cleaner code with functional programming" 3689: 3625: 3573:"Who uses Erlang for product development?" 3562: 3421: 3419: 3388: 3346: 2958:, since version 24.03 supports previewing 1779:) were designed with speed optimizations. 935:during compiling, among other approaches. 394:, was developed in the late 1950s for the 7343:Programming in the large and in the small 7223: 6840: 6838: 6767: 6578: 6170: 5735:"An In-Depth Look at Clojure Collections" 5328: 5299:"Higher Order Unification 30 years later" 5209: 5008: 4850: 4809: 4762: 4715: 4661: 4200: 4018: 3927: 3810: 3743: 3712: 3652: 3598: 3156:Comprehensive Capital Analysis and Review 2070:is a direct invocation of the underlying 2053:"Argument must be an integer: " 1685:The pure functional programming language 1198:A limited form of dependent types called 1120:, used in Lisp and its variants (such as 1000:. Some special purpose languages such as 30:For subroutine-oriented programming, see 7192:, and does not reflect subsequent edits. 7175: 7113:. 3rd ed. Englewood Cliffs, New Jersey: 6502: 6361: 6216: 6153:. Python Software Foundation. 2011-07-31 5881:"Chapter 25. Profiling and optimization" 4476: 4181: 3996: 3990: 3920:Lecture Notes in Artificial Intelligence 3516:. University of Colorado. Archived from 3447: 3266: 3239:List of functional programming languages 2129:will be stored in specific CPU registers 176:Functional programming has its roots in 106:from other functions, just as any other 6945:IMACS – Making Better Thinkers for Life 6678: 6625: 6606: 6019: 5642: 5636: 5605: 5198:A Natural Semantics for Lazy Evaluation 5137: 5076: 4785: 4738: 4691: 4147: 3858: 3577:Frequently asked questions about Erlang 3502: 3416: 3355: 3259: 1403:The following two examples (written in 1283:Now, consider another function such as 1244:. Let us say that the initial value of 14: 8271: 6987:The Functional Approach to Programming 6835: 6530: 6405: 5900: 5583:"Thirteen ways of looking at a turtle" 5143: 4832: 4637: 4622:, a program that proved theorems from 4430: 4360: 3634: 3539:"State-Based Scripting in Uncharted 2" 3334: 1075: 712:First-class and higher-order functions 8101: 7260: 6938: 6231: 5343: 5318: 5153:Journal of Universal Computer Science 5117: 4983:"Functional Programming Comes of Age" 4560:History of programming languages---II 4493:. Los Angeles, CA. pp. 173–185. 4209:"Python Metaclasses: Who? Why? When?" 4119: 4117: 4040: 4024: 3889: 3429:Terrorism Response Training in Scheme 3272: 3244:List of functional programming topics 1757:The Computer Language Benchmarks Game 1399:Imperative vs. functional programming 404:Massachusetts Institute of Technology 6866: 6724: 6551: 6441: 6364:"Spreadsheet functional programming" 6291:The Reasoned Schemer, Second Edition 6262:"Object.freeze() - JavaScript | MDN" 6110: 5526: 5478:"Why Functional Programming Matters" 5296: 5281: 5254: 4980: 4788:"The next 700 programming languages" 4530:(4). ACM New York, NY, US: 184–195. 4282:Vanderbauwhede, Wim (18 July 2020). 4082:Proceedings of the 1974 ACM SIGFIDET 3969: 3950: 3340:"Why Functional Programming Matters" 1726: 1379:Comparison to imperative programming 1100:Especially since the development of 470:). APL was the primary influence on 352:proved that the lambda calculus and 6775:"Functional Programming: 2019-2020" 6656:"Why developers like ClojureScript" 6555:Building a Startup with Standard ML 6240:(Second ed.). Addison-Wesley. 6185: 5560: 5344:Leroy, Xavier (17 September 2018). 4894:"Make discovering assign() easier!" 4802:Association for Computing Machinery 4755:Association for Computing Machinery 4708:Association for Computing Machinery 4692:Landin, Peter J. (February 1965a). 4004:. Springer Verlag. pp. 67–70. 3637:"Erlang for concurrent programming" 3084:programming and static analysis of 2151:explicitly support pure functions. 1866: 1676: 1175:from which a compiler can generate 1024:Strict versus non-strict evaluation 24: 7162: 7076:Michaelson, Greg (10 April 2013). 6961: 6607:Lorimer, R. J. (19 January 2009). 6445:Functional Programming at Facebook 6217:Williams, Michael (8 April 2013). 5643:Spiewak, Daniel (26 August 2008). 5475: 5363:; Geoffrey Washburn (April 2006). 4679:Future Generation Computer Systems 4412:. North-Holland Publishing Company 4114: 2977:can be considered a form of pure, 1332: 951:. However, when this happens, its 886:also lets functions be designated 478:. In the early 1990s, Iverson and 149:. This is in contrast with impure 49:where programs are constructed by 25: 8295: 7143: 6985:Cousineau, Guy and Michel Mauny. 6371:Journal of Functional Programming 6062:. Digital Mars. 30 December 2012. 5980:Journal of Functional Programming 5499:Purely functional data structures 5485:Chalmers University of Technology 5439:. OOPSLA. San Diego, California: 4936:John Leonard (January 24, 2017). 4681:. Vol. 16. pp. 739–751. 4046: 3752: 3701:Journal of Functional Programming 3677:"The Elixir Programming Language" 3456: 3003:Journal of Functional Programming 2256:pattern roughly corresponds to a 2080:, so let's take for instance the 2020:clojure.lang.RT/uncheckedLongCast 1759:. For programs that handle large 1264:respectively. Clearly, replacing 817: 390:functional programming language, 7887:Partitioned global address space 7240:Functional programming in Python 7208: 7174: 7061:. Englewood Cliffs, New Jersey: 6932: 6908: 6875:"Computer Science 61A, Berkeley" 6822:"Computer Science BSc - Modules" 6743: 6718: 6702:"Why developers like PureScript" 6694: 6672: 6648: 6619: 6600: 6572: 6545: 6524: 6496: 6435: 6331: 6307: 6297: 6282: 6254: 6225: 6210: 6179: 6164: 6143: 6119: 6104: 6080: 5346:"The Compcert verified compiler" 4786:Landin, Peter J. (March 1966b). 4739:Landin, Peter J. (March 1965b). 4491:History of Programming Languages 3425: 3234:Inductive functional programming 3208: 2096:is 4% slower than an equivalent 1339:Purely functional data structure 1200:generalized algebraic data types 894:keyword with similar semantics. 655:. This led to new approaches to 18:Functional programming languages 7224:Akhmechet, Slava (2006-06-19). 6854:"Preface to the Second Edition" 6192:James Gosling: on the Java Road 6066: 6052: 5964: 5940: 5916: 5894: 5873: 5848: 5823: 5799: 5775: 5751: 5727: 5692: 5667: 5599: 5575: 5554: 5545: 5520: 5491: 5469: 5423: 5399: 5375: 5352: 5337: 5312: 5290: 5275: 5248: 5218: 5171: 5111: 5070: 5049: 4974: 4965: 4944: 4929: 4915:Peter Bright (March 13, 2018). 4908: 4886: 4877: 4868: 4859: 4779: 4732: 4685: 4670: 4631: 4596: 4550: 4505: 4470: 4424: 4397: 4354: 4275: 4251: 4233: 4175: 4141: 4100:, 8 August 2021, archived from 4088: 3944: 3911: 3669: 3229:Functional reactive programming 2969: 2932: 2927: 2272:Comparison to logic programming 1351:counterparts. For example, the 1089: 438:Information Processing Language 8129:Types of programming languages 7137:Addison-Wesley Longman Limited 7126:Macmillan Technical Publishing 6895:Emmanuel Schanzer of Bootstrap 6725:Team, Editorial (2019-01-08). 6679:Herrick, Justin (2024-04-29), 6219:"Java SE 8 Lambda Quick Start" 6111:Eich, Brendan (3 April 2008). 5615:. Cambridge University Press. 5149:"Total Functional Programming" 2111:One distinguishing feature of 1771:functional languages (such as 798:Higher-order functions enable 662:The lazy functional language, 13: 1: 8229: 5973:"The Functional C experience" 5901:Berthe, Samuel (2024-04-29), 5612:ML for the Working Programmer 5269:10.1016/s0019-9958(73)90301-x 4363:The Journal of Symbolic Logic 4184:Functional Programming in PHP 3756:Some uses of Caml in Industry 3254:Purely functional programming 3158:. Given the use of OCaml and 3021:, which was developed by the 1410:Traditional imperative loop: 1102:Hindley–Milner type inference 546:principle of compositionality 127:purely functional programming 8261:Programming paradigms navbox 7414:Uniform Function Call Syntax 3929:10.1007/978-3-030-79876-5_37 3358:"MultiTasking and MacScheme" 3173: 3164:categorical abstract machine 1711:Alternative methods such as 1018:total functional programming 904:Recursion (computer science) 897: 377:simply-typed lambda calculus 332:, developed in the 1930s by 7: 7882:Parallel programming models 7856:Concurrent constraint logic 6939:Staff, IMACS (2011-06-03). 6897:interviewed on the TV show 6585:. CUFP 2007. Archived from 6509:. CUFP 2009. Archived from 6448:. CUFP 2009. Archived from 6074:"Lua Unofficial FAQ (uFAQ)" 5883:. Book.realworldhaskell.org 3979:. R-project.org. 2006-06-08 3896:. CUFP 2009. Archived from 3865:. CUFP 2008. Archived from 3762:. CUFP 2007. Archived from 3463:. CUFP 2006. Archived from 3432:. CUFP 2007. Archived from 3216:Computer programming portal 3201: 3012: 2991:programming language theory 2984: 2396:But it can also be queried 1229:referentially transparent. 988:, can cause unsoundness of 706:object-oriented programming 695: 657:interactive theorem proving 398:of scientific computers by 248:in financial analysis, and 10: 8300: 7975:Metalinguistic abstraction 7842:Automatic mutual exclusion 6991:Cambridge University Press 6442:Piro, Christopher (2009). 6171:Skarsaune, Martin (2008). 5508:Cambridge University Press 4951:Leo Cheung (May 9, 2017). 3862:Quantitative Finance in F# 3635:Larson, Jim (March 2009). 3514:Department of Applied Math 1336: 1221: 1157:intuitionistic type theory 1093: 1027: 933:continuation passing style 901: 821: 715: 641:intuitionistic type theory 585:Kleene Recursion Equations 550:function-level programming 323: 29: 8188: 8135: 8030: 7915: 7847:Choreographic programming 7817: 7633: 7575: 7532: 7435: 7426: 7366: 7308: 7299: 6873:John DeNero (Fall 2019). 6797:"Programming I (Haskell)" 6579:Laurikari, Ville (2007). 6383:10.1017/S0956796806006186 5992:10.1017/S0956796803004817 5282:Huet, Gérard (Sep 1976). 4839:Communications of the ACM 4793:Communications of the ACM 4746:Communications of the ACM 4699:Communications of the ACM 4638:Landin, Peter J. (1964). 4524:Communications of the ACM 4436:Journal of Symbolic Logic 3951:Banz, Matt (2017-06-27). 3714:10.1017/S095679680800676X 3641:Communications of the ACM 3389:Hartheimer, Anne (1987). 3080:verification, industrial 2075: 2065: 2044:IllegalArgumentException. 1284: 831:(or expressions) have no 7897:Relativistic programming 6862:(2 ed.). MIT Press. 6626:Bugnion, Pascal (2016). 6362:Wakeling, David (2007). 6194:. Oracle. Archived from 5165:10.3217/jucs-010-07-0751 4654:British Computer Society 4182:Holywell, Simon (2014). 3859:Mansell, Howard (2008). 2679: 2592: 2552: 2475: 2402: 2400:, to generate children: 2325: 2282: 1954: 1885: 1832:mechanisms (such as the 1548: 1412: 1224:Referential transparency 1218:Referential transparency 1204:Glasgow Haskell Compiler 1169:Curry–Howard isomorphism 844:referential transparency 577:University of St Andrews 422:, and offshoots such as 412:multi-paradigm languages 372:in the 1920s and 1930s. 169:, and be more suited to 7107:Marvin Victor Zelkowitz 7105:Pratt, Terrence W. and 7080:. Courier Corporation. 7072:. Addison-Wesley, 1990. 6731:E-commerce Germany News 6315:"How I do my Computing" 5527:L’orange, Jean Niklas. 5449:10.1145/1094811.1094814 5257:Information and Control 3837:10.1145/1238844.1238856 3717:(inactive 2024-08-12). 3654:10.1145/1467247.1467263 3609:10.1145/1238844.1238850 1817:concurrent and parallel 1130:test-driven development 1114:untyped lambda calculus 571:developed the language 565:University of Edinburgh 442:assembly-style language 62:declarative programming 8279:Functional programming 7907:Structured concurrency 7292:Comparison by language 7170: 7150:Listen to this article 7050:How to Design Programs 6628:Scala for Data Science 6533:"Beating the Averages" 6503:Momtahan, Lee (2009). 5587:fF# for fun and profit 5407:"Algebraic Data Types" 4663:10.1093/comjnl/6.4.308 4572:10.1145/234286.1057818 3356:Clinger, Will (1987). 2117:zero-cost abstractions 2100:loop and has the same 1689:implements them using 1671:Greenspun's tenth rule 1385:imperative programming 1193:C programming language 1181:formalized mathematics 1080:separation of concerns 1044:denotational semantics 781: 757: 727:Higher-order functions 702:imperative programming 685:language built on the 630:tail-call optimization 618:and the 1985 textbook 614:, as described in the 525:programming language. 460:A Programming Language 155:imperative programming 43:functional programming 32:Procedural programming 8284:Programming paradigms 8250:Programming languages 7872:Multitier programming 7688:Interface description 7288:Programming paradigms 7211:"Functional thinking" 7169: 7033:Dominus, Mark Jason. 6682:jah2488/elm-companies 6531:Graham, Paul (2003). 6266:developer.mozilla.org 5297:Huet, Gérard (2002). 5211:10.1145/158511.158618 5118:Baker, Henry (1994). 5087:10.1145/277650.277719 4852:10.1145/359576.359579 4811:10.1145/365230.365257 4764:10.1145/363791.363804 4717:10.1145/363744.363749 4625:Principia Mathematica 4536:10.1145/367177.367199 4499:10.1145/800025.808387 4074:Chamberlin, Donald D. 3791:"Haskell in industry" 3285:ACM Computing Surveys 3046:Électricité de France 2171:first class functions 1805:and a concept called 1763:and multidimensional 1236:assignment statement 1118:false negative errors 1110:false positive errors 1106:typed lambda calculus 1084:operational semantics 792:first-class functions 782: 758: 731:differential operator 722:Higher-order function 7201:More spoken articles 7068:MacLennan, Bruce J. 6552:Sims, Steve (2006). 6484:1 million is so 2011 5655:on 23 September 2015 5204:. pp. 144–154. 5081:. pp. 174–185. 4645:The Computer Journal 4566:. pp. 233–330. 4025:Novatchev, Dimitre. 3890:Peake, Alex (2009). 3260:Notes and references 2993:. There are several 2595:maternal_grandmother 2555:maternal_grandmother 2133:constant-time access 1825:java.util.concurrent 1191:for a subset of the 1112:, as opposed to the 1010:strongly normalizing 990:equational reasoning 972:imperative languages 771: 763:, which returns the 756:{\displaystyle d/dx} 736: 718:First-class function 486:. In the mid-1990s, 346:function application 180:, evolving from the 92:first-class citizens 47:programming paradigm 8012:Self-modifying code 7620:Probabilistic logic 7551:Functional reactive 7506:Expression-oriented 7460:Partial application 7135:. Harlow, England: 7013:Seldin, Jonathan P. 6973:Sussman, Gerald Jay 6850:Sussman, Gerald Jay 6413:Peyton Jones, Simon 5411:Scala Documentation 4833:Backus, J. (1978). 4247:. 22 December 2020. 4207:The Cain Gang Ltd. 3401:(1). Archived from 3297:10.1145/72551.72554 3066:simulation software 1948:2.11.2, running on 1173:mathematical proofs 1126:algebraic datatypes 1030:Evaluation strategy 917:Recursive functions 800:partial application 649:constructive proofs 583:. NPL was based on 521:, and proposed the 396:IBM 700/7000 series 364:, was developed by 318:Java (since Java 8) 171:formal verification 7925:Attribute-oriented 7698:List comprehension 7643:Algebraic modeling 7456:Anonymous function 7348:Design by contract 7318:Jackson structures 7242:(by David Mertz): 7171: 7098:Real World Haskell 6755:www.wappalyzer.com 6489:2014-02-19 at the 6026:IBM developerWorks 5361:Weirich, Stephanie 4053:IBM developerWorks 3276:(September 1989). 3034:telecommunications 1941:GNU/Linux PC in a 1343:Purely functional 1165:higher-order logic 1008:recursion and are 981:, which makes the 808:successor function 777: 753: 608:Gerald Jay Sussman 555:The 1973 language 501:In the mid-1960s, 452:Kenneth E. Iverson 8239:Computer language 8226: 8225: 8095: 8094: 7985:Program synthesis 7877:Organic computing 7813: 7812: 7718:Non-English-based 7693:Language-oriented 7471:Purely functional 7422: 7421: 7167: 7131:Thompson, Simon. 7087:978-0-486-28029-5 7036:Higher-Order Perl 7026:978-0-7204-2208-5 7017:Combinatory Logic 7009:Hindley, J. Roger 7005:Curry, Haskell B. 6998:Combinatory Logic 6989:. Cambridge, UK: 6417:Burnett, Margaret 6127:van Rossum, Guido 5952:doc.rust-lang.org 5866:978-0-596-55585-6 5787:doc.rust-lang.org 5763:doc.rust-lang.org 5622:978-0-521-56543-1 5607:Paulson, Larry C. 5321:Tech. Rep. 93-011 4608:Models of My Life 4581:978-0-201-89502-5 4408:Combinatory Logic 4310:"Effective Scala" 4263:doc.rust-lang.org 4168:978-1-55860-701-9 4154:Higher-Order Perl 4078:Boyce, Raymond F. 4011:978-0-387-98503-9 3998:Chambers, John M. 3145:Allegro Lokalnie. 3086:embedded software 2277:Logic programming 2218:anonymous classes 1727:Efficiency issues 1667:off-by-one errors 1040:non-strict (lazy) 953:garbage collector 780:{\displaystyle f} 366:Moses Schönfinkel 362:combinatory logic 83:which update the 16:(Redirected from 8291: 8265: 8259: 8254: 8248: 8243: 8237: 8122: 8115: 8108: 8099: 8098: 7997:by demonstration 7902:Service-oriented 7892:Process-oriented 7867:Macroprogramming 7852:Concurrent logic 7723:Page description 7713:Natural language 7683:Grammar-oriented 7610:Nondeterministic 7599:Constraint logic 7501:Point-free style 7496:Functional logic 7433: 7432: 7404:Immutable object 7323:Block-structured 7306: 7305: 7281: 7274: 7267: 7258: 7257: 7235: 7233: 7232: 7220: 7218: 7217: 7191: 7189: 7178: 7177: 7168: 7158: 7156: 7151: 7120:Salus, Peter H. 7102: 7091: 7059:ANSI Common LISP 7054: 7030: 6982: 6955: 6954: 6952: 6951: 6936: 6930: 6929: 6927: 6926: 6920:home.adelphi.edu 6912: 6906: 6892: 6886: 6885: 6883: 6882: 6870: 6864: 6863: 6842: 6833: 6832: 6830: 6828: 6818: 6809: 6808: 6806: 6804: 6793: 6787: 6786: 6784: 6782: 6771: 6765: 6764: 6762: 6761: 6747: 6741: 6740: 6738: 6737: 6722: 6716: 6715: 6713: 6712: 6698: 6692: 6691: 6690: 6689: 6676: 6670: 6669: 6667: 6666: 6652: 6646: 6645: 6630:(1st ed.). 6623: 6617: 6616: 6604: 6598: 6597: 6595: 6594: 6576: 6570: 6569: 6567: 6566: 6560: 6549: 6543: 6542: 6540: 6539: 6528: 6522: 6521: 6519: 6518: 6500: 6494: 6481: 6475: 6474: 6473:. November 2011. 6467: 6461: 6460: 6458: 6457: 6439: 6433: 6432: 6427:. Archived from 6409: 6403: 6402: 6368: 6359: 6353: 6352: 6350: 6349: 6343:helix-editor.com 6335: 6329: 6328: 6326: 6325: 6311: 6305: 6301: 6295: 6294: 6293:. The MIT Press. 6286: 6280: 6279: 6273: 6272: 6258: 6252: 6251: 6239: 6229: 6223: 6222: 6214: 6208: 6207: 6205: 6203: 6186:Gosling, James. 6183: 6177: 6176: 6168: 6162: 6161: 6159: 6158: 6147: 6141: 6140: 6138: 6137: 6123: 6117: 6116: 6108: 6102: 6101: 6099: 6098: 6084: 6078: 6077: 6070: 6064: 6063: 6056: 6050: 6040: 6038: 6037: 6028:. Archived from 6017: 6015: 6014: 6008: 6002:. Archived from 5977: 5968: 5962: 5961: 5959: 5958: 5944: 5938: 5937: 5935: 5934: 5920: 5914: 5913: 5912: 5911: 5898: 5892: 5891: 5889: 5888: 5877: 5871: 5870: 5852: 5846: 5845: 5843: 5842: 5835:scaleyourapp.com 5827: 5821: 5820: 5818: 5817: 5803: 5797: 5796: 5794: 5793: 5779: 5773: 5772: 5770: 5769: 5755: 5749: 5748: 5746: 5745: 5731: 5725: 5724: 5707:(5–6): 639–662. 5696: 5690: 5689: 5687: 5686: 5671: 5665: 5664: 5662: 5660: 5651:. Archived from 5640: 5634: 5633: 5631: 5629: 5609:(28 June 1996). 5603: 5597: 5596: 5594: 5593: 5579: 5573: 5572: 5570: 5569: 5558: 5552: 5549: 5543: 5542: 5540: 5539: 5524: 5518: 5495: 5489: 5488: 5482: 5473: 5467: 5466: 5461:. Archived from 5438: 5427: 5421: 5420: 5418: 5417: 5403: 5397: 5396: 5394: 5393: 5379: 5373: 5372: 5356: 5350: 5349: 5341: 5335: 5334: 5332: 5316: 5310: 5309: 5303: 5294: 5288: 5287: 5279: 5273: 5272: 5252: 5246: 5245: 5243: 5237:. Archived from 5236: 5226:Robert W. Harper 5222: 5216: 5215: 5213: 5194:Launchbury, John 5190: 5181: 5175: 5169: 5168: 5141: 5135: 5134: 5132: 5131: 5115: 5109: 5108: 5074: 5068: 5067: 5065: 5064: 5053: 5047: 5046: 5044: 5043: 5032: 5026: 5025: 5023: 5015: 5006: 5005: 5003: 5001: 4992:. Archived from 4981:Pountain, Dick. 4978: 4972: 4969: 4963: 4962: 4948: 4942: 4941: 4933: 4927: 4926: 4912: 4906: 4905: 4900:. Archived from 4890: 4884: 4881: 4875: 4872: 4866: 4863: 4857: 4856: 4854: 4830: 4824: 4823: 4813: 4783: 4777: 4776: 4766: 4736: 4730: 4729: 4719: 4689: 4683: 4682: 4674: 4668: 4667: 4665: 4635: 4629: 4604:Herbert A. Simon 4600: 4594: 4593: 4565: 4554: 4548: 4547: 4521: 4509: 4503: 4502: 4488: 4474: 4468: 4467: 4428: 4422: 4421: 4419: 4417: 4411: 4401: 4395: 4394: 4358: 4352: 4351: 4349: 4348: 4338: 4332: 4331: 4329:Effective Scala. 4326: 4325: 4316:. Archived from 4306: 4300: 4299: 4297: 4295: 4286:. Archived from 4279: 4273: 4272: 4270: 4269: 4255: 4249: 4248: 4237: 4231: 4230: 4228: 4226: 4220: 4214:. Archived from 4213: 4204: 4198: 4197: 4179: 4173: 4172: 4149:Dominus, Mark J. 4145: 4139: 4138: 4136: 4135: 4121: 4112: 4111: 4110: 4109: 4092: 4086: 4085: 4070: 4064: 4063: 4061: 4059: 4044: 4038: 4037: 4035: 4033: 4022: 4016: 4015: 3994: 3988: 3987: 3985: 3984: 3973: 3967: 3966: 3964: 3963: 3948: 3942: 3941: 3931: 3915: 3909: 3908: 3906: 3905: 3887: 3878: 3877: 3875: 3874: 3856: 3847: 3846: 3844: 3843: 3819: 3808: 3807: 3802: 3801: 3787: 3778: 3777: 3775: 3774: 3768: 3761: 3750: 3741: 3740: 3734: 3726: 3716: 3696: 3687: 3686: 3684: 3683: 3673: 3667: 3666: 3656: 3632: 3623: 3622: 3596: 3587: 3586: 3584: 3583: 3569: 3560: 3559: 3557: 3556: 3550: 3544:. Archived from 3543: 3535: 3529: 3528: 3526: 3525: 3506: 3500: 3499: 3497: 3496: 3485: 3476: 3475: 3473: 3472: 3457:Cleis, Richard. 3454: 3445: 3444: 3442: 3441: 3423: 3414: 3413: 3411: 3410: 3386: 3377: 3376: 3374: 3373: 3353: 3344: 3343: 3332: 3323: 3322: 3320: 3319: 3313: 3307:. Archived from 3282: 3270: 3224:Eager evaluation 3218: 3213: 3212: 3105:Wolfram Language 2950:Richard Stallman 2948:and Emacs Lisp, 2920: 2917: 2914: 2911: 2908: 2905: 2902: 2899: 2896: 2893: 2890: 2887: 2884: 2881: 2878: 2875: 2872: 2869: 2866: 2863: 2860: 2857: 2854: 2851: 2848: 2845: 2842: 2839: 2836: 2833: 2830: 2827: 2824: 2821: 2818: 2815: 2812: 2809: 2806: 2803: 2800: 2797: 2794: 2791: 2788: 2785: 2782: 2779: 2776: 2773: 2770: 2767: 2764: 2761: 2758: 2755: 2752: 2749: 2746: 2743: 2740: 2737: 2734: 2731: 2728: 2725: 2722: 2719: 2716: 2713: 2710: 2707: 2704: 2701: 2698: 2695: 2692: 2689: 2686: 2683: 2665: 2657: 2650: 2647: 2644: 2641: 2638: 2635: 2632: 2629: 2626: 2623: 2620: 2617: 2614: 2611: 2608: 2605: 2602: 2599: 2596: 2586: 2583: 2580: 2577: 2574: 2571: 2568: 2565: 2562: 2559: 2556: 2545: 2542: 2539: 2536: 2533: 2530: 2527: 2524: 2521: 2518: 2515: 2512: 2509: 2506: 2503: 2500: 2497: 2494: 2491: 2488: 2485: 2482: 2479: 2469: 2466: 2463: 2460: 2457: 2454: 2451: 2448: 2445: 2442: 2439: 2436: 2433: 2430: 2427: 2424: 2421: 2418: 2415: 2412: 2409: 2406: 2392: 2389: 2386: 2383: 2380: 2377: 2374: 2371: 2368: 2365: 2362: 2359: 2356: 2353: 2350: 2347: 2344: 2341: 2338: 2335: 2332: 2329: 2319: 2316: 2313: 2310: 2307: 2304: 2301: 2298: 2295: 2292: 2289: 2286: 2250:strategy pattern 2192: 2099: 2095: 2079: 2078: 2069: 2068: 2060: 2057: 2054: 2051: 2048: 2045: 2042: 2039: 2036: 2033: 2030: 2027: 2024: 2021: 2018: 2015: 2012: 2009: 2006: 2003: 2000: 1997: 1994: 1991: 1988: 1985: 1982: 1979: 1976: 1973: 1970: 1967: 1964: 1961: 1958: 1925: 1922: 1919: 1916: 1913: 1910: 1907: 1904: 1901: 1898: 1895: 1892: 1889: 1867:Abstraction cost 1826: 1784:inline expansion 1677:Simulating state 1660: 1657: 1654: 1651: 1648: 1645: 1642: 1639: 1636: 1633: 1630: 1627: 1624: 1621: 1618: 1615: 1612: 1609: 1606: 1603: 1600: 1597: 1594: 1591: 1588: 1585: 1582: 1579: 1576: 1573: 1570: 1567: 1564: 1561: 1558: 1555: 1552: 1542: 1539: 1536: 1533: 1530: 1527: 1524: 1521: 1518: 1515: 1512: 1509: 1506: 1503: 1500: 1497: 1494: 1491: 1488: 1485: 1482: 1479: 1476: 1473: 1470: 1467: 1464: 1461: 1458: 1455: 1452: 1449: 1446: 1443: 1440: 1437: 1434: 1431: 1428: 1425: 1422: 1419: 1416: 1321: 1320: 1317: 1314: 1311: 1308: 1305: 1302: 1299: 1296: 1293: 1290: 1287: 1275: 1271: 1267: 1263: 1259: 1255: 1251: 1247: 1243: 1239: 893: 786: 784: 783: 778: 762: 760: 759: 754: 746: 511:abstract machine 198:Wolfram Language 87:of the program. 39:computer science 21: 8299: 8298: 8294: 8293: 8292: 8290: 8289: 8288: 8269: 8268: 8263: 8257: 8252: 8246: 8241: 8235: 8232: 8227: 8222: 8184: 8175:Very high-level 8131: 8126: 8096: 8091: 8033: 8026: 7917:Metaprogramming 7911: 7827: 7822: 7809: 7791:Graph rewriting 7629: 7605:Inductive logic 7585:Abductive logic 7571: 7528: 7491:Dependent types 7439: 7418: 7390:Prototype-based 7370: 7368:Object-oriented 7362: 7358:Nested function 7353:Invariant-based 7295: 7285: 7236:An introduction 7230: 7228: 7215: 7213: 7205: 7204: 7193: 7187: 7185: 7182:This audio file 7179: 7172: 7163: 7160: 7154: 7153: 7149: 7146: 7088: 7041:Morgan Kaufmann 7027: 6964: 6962:Further reading 6959: 6958: 6949: 6947: 6937: 6933: 6924: 6922: 6914: 6913: 6909: 6893: 6889: 6880: 6878: 6871: 6867: 6843: 6836: 6826: 6824: 6820: 6819: 6812: 6802: 6800: 6795: 6794: 6790: 6780: 6778: 6773: 6772: 6768: 6759: 6757: 6749: 6748: 6744: 6735: 6733: 6723: 6719: 6710: 6708: 6700: 6699: 6695: 6687: 6685: 6677: 6673: 6664: 6662: 6654: 6653: 6649: 6642: 6624: 6620: 6605: 6601: 6592: 6590: 6577: 6573: 6564: 6562: 6558: 6550: 6546: 6537: 6535: 6529: 6525: 6516: 6514: 6501: 6497: 6491:Wayback Machine 6482: 6478: 6469: 6468: 6464: 6455: 6453: 6440: 6436: 6421:Blackwell, Alan 6410: 6406: 6366: 6360: 6356: 6347: 6345: 6337: 6336: 6332: 6323: 6321: 6313: 6312: 6308: 6302: 6298: 6287: 6283: 6270: 6268: 6260: 6259: 6255: 6248: 6230: 6226: 6215: 6211: 6201: 6199: 6184: 6180: 6169: 6165: 6156: 6154: 6149: 6148: 6144: 6135: 6133: 6124: 6120: 6109: 6105: 6096: 6094: 6086: 6085: 6081: 6072: 6071: 6067: 6058: 6057: 6053: 6035: 6033: 6012: 6010: 6006: 5975: 5969: 5965: 5956: 5954: 5946: 5945: 5941: 5932: 5930: 5922: 5921: 5917: 5909: 5907: 5899: 5895: 5886: 5884: 5879: 5878: 5874: 5867: 5853: 5849: 5840: 5838: 5829: 5828: 5824: 5815: 5813: 5811:docs.oracle.com 5805: 5804: 5800: 5791: 5789: 5781: 5780: 5776: 5767: 5765: 5757: 5756: 5752: 5743: 5741: 5733: 5732: 5728: 5713:10.1002/cpe.853 5697: 5693: 5684: 5682: 5673: 5672: 5668: 5658: 5656: 5641: 5637: 5627: 5625: 5623: 5604: 5600: 5591: 5589: 5581: 5580: 5576: 5567: 5565: 5559: 5555: 5550: 5546: 5537: 5535: 5525: 5521: 5496: 5492: 5480: 5474: 5470: 5459: 5436: 5428: 5424: 5415: 5413: 5405: 5404: 5400: 5391: 5389: 5381: 5380: 5376: 5357: 5353: 5342: 5338: 5317: 5313: 5301: 5295: 5291: 5280: 5276: 5253: 5249: 5241: 5234: 5223: 5219: 5191: 5184: 5176: 5172: 5142: 5138: 5129: 5127: 5116: 5112: 5097: 5075: 5071: 5062: 5060: 5055: 5054: 5050: 5041: 5039: 5034: 5033: 5029: 5021: 5017: 5016: 5009: 4999: 4997: 4979: 4975: 4970: 4966: 4949: 4945: 4934: 4930: 4913: 4909: 4892: 4891: 4887: 4882: 4878: 4873: 4869: 4864: 4860: 4831: 4827: 4784: 4780: 4737: 4733: 4690: 4686: 4675: 4671: 4636: 4632: 4601: 4597: 4582: 4563: 4555: 4551: 4519: 4510: 4506: 4486: 4483:History of Lisp 4475: 4471: 4448:10.2307/2266170 4429: 4425: 4415: 4413: 4402: 4398: 4375:10.2307/2268280 4359: 4355: 4346: 4344: 4340: 4339: 4335: 4323: 4321: 4308: 4307: 4303: 4293: 4291: 4290:on 28 July 2020 4280: 4276: 4267: 4265: 4257: 4256: 4252: 4239: 4238: 4234: 4224: 4222: 4218: 4211: 4205: 4201: 4194: 4180: 4176: 4169: 4159:Morgan Kaufmann 4146: 4142: 4133: 4131: 4123: 4122: 4115: 4107: 4105: 4094: 4093: 4089: 4071: 4067: 4057: 4055: 4045: 4041: 4031: 4029: 4023: 4019: 4012: 3995: 3991: 3982: 3980: 3975: 3974: 3970: 3961: 3959: 3949: 3945: 3916: 3912: 3903: 3901: 3888: 3881: 3872: 3870: 3857: 3850: 3841: 3839: 3820: 3811: 3799: 3797: 3789: 3788: 3781: 3772: 3770: 3766: 3759: 3753:Leroy, Xavier. 3751: 3744: 3728: 3727: 3697: 3690: 3681: 3679: 3675: 3674: 3670: 3633: 3626: 3619: 3597: 3590: 3581: 3579: 3571: 3570: 3563: 3554: 3552: 3548: 3541: 3537: 3536: 3532: 3523: 3521: 3508: 3507: 3503: 3494: 3492: 3487: 3486: 3479: 3470: 3468: 3460:Scheme in Space 3455: 3448: 3439: 3437: 3424: 3417: 3408: 3406: 3387: 3380: 3371: 3369: 3354: 3347: 3333: 3326: 3317: 3315: 3311: 3280: 3271: 3267: 3262: 3249:Nested function 3214: 3207: 3204: 3194:In particular, 3176: 3168:category theory 3062:Apple Macintosh 3056:, a dialect of 3015: 2987: 2972: 2935: 2930: 2922: 2921: 2918: 2915: 2912: 2909: 2906: 2903: 2900: 2897: 2894: 2891: 2888: 2885: 2882: 2879: 2876: 2873: 2870: 2867: 2864: 2861: 2858: 2855: 2852: 2849: 2846: 2843: 2840: 2837: 2834: 2831: 2828: 2825: 2822: 2819: 2816: 2813: 2810: 2807: 2804: 2801: 2798: 2795: 2792: 2789: 2786: 2783: 2780: 2777: 2774: 2771: 2768: 2765: 2762: 2759: 2756: 2753: 2750: 2747: 2744: 2741: 2738: 2735: 2732: 2729: 2726: 2723: 2720: 2717: 2714: 2711: 2708: 2705: 2702: 2699: 2696: 2693: 2690: 2687: 2684: 2681: 2663: 2655: 2652: 2651: 2648: 2645: 2642: 2639: 2636: 2633: 2630: 2627: 2624: 2621: 2618: 2615: 2612: 2609: 2606: 2603: 2600: 2597: 2594: 2588: 2587: 2584: 2581: 2578: 2575: 2572: 2569: 2566: 2563: 2560: 2557: 2554: 2547: 2546: 2543: 2540: 2537: 2534: 2531: 2528: 2525: 2522: 2519: 2516: 2513: 2510: 2507: 2504: 2501: 2498: 2495: 2492: 2489: 2486: 2483: 2480: 2477: 2471: 2470: 2467: 2464: 2461: 2458: 2455: 2452: 2449: 2446: 2443: 2440: 2437: 2434: 2431: 2428: 2425: 2422: 2419: 2416: 2413: 2410: 2407: 2404: 2394: 2393: 2390: 2387: 2384: 2381: 2378: 2375: 2372: 2369: 2366: 2363: 2360: 2357: 2354: 2351: 2348: 2345: 2342: 2339: 2336: 2333: 2330: 2327: 2321: 2320: 2317: 2314: 2311: 2308: 2305: 2302: 2299: 2296: 2293: 2290: 2287: 2284: 2274: 2246:design patterns 2243:object-oriented 2190: 2141: 2131:, allowing for 2097: 2093: 2076: 2066: 2062: 2061: 2058: 2055: 2052: 2049: 2046: 2043: 2040: 2037: 2034: 2031: 2028: 2025: 2022: 2019: 2016: 2013: 2010: 2007: 2004: 2001: 1998: 1995: 1992: 1989: 1986: 1983: 1980: 1977: 1975:"1.0" 1974: 1971: 1968: 1965: 1962: 1959: 1956: 1927: 1926: 1923: 1920: 1917: 1914: 1911: 1908: 1905: 1902: 1899: 1896: 1893: 1890: 1887: 1869: 1852:Lazy evaluation 1830:message passing 1824: 1745:pointer chasing 1729: 1695:category theory 1693:, derived from 1679: 1662: 1661: 1658: 1655: 1652: 1649: 1646: 1643: 1640: 1637: 1634: 1631: 1628: 1625: 1622: 1619: 1616: 1613: 1610: 1607: 1604: 1601: 1598: 1595: 1592: 1589: 1586: 1583: 1580: 1577: 1574: 1571: 1568: 1565: 1562: 1559: 1556: 1553: 1550: 1544: 1543: 1540: 1537: 1534: 1531: 1528: 1525: 1522: 1519: 1516: 1513: 1510: 1507: 1504: 1501: 1498: 1495: 1492: 1489: 1486: 1483: 1480: 1477: 1474: 1471: 1468: 1465: 1462: 1459: 1456: 1453: 1450: 1447: 1444: 1441: 1438: 1435: 1432: 1429: 1426: 1423: 1420: 1417: 1414: 1401: 1381: 1345:data structures 1341: 1335: 1333:Data structures 1318: 1315: 1312: 1309: 1306: 1303: 1300: 1297: 1294: 1291: 1288: 1285: 1273: 1269: 1265: 1261: 1257: 1253: 1249: 1245: 1241: 1237: 1226: 1220: 1161:dependent types 1098: 1092: 1058:graph reduction 1050: 1049:print length() 1032: 1026: 983:halting problem 979:Turing complete 906: 900: 891: 826: 820: 772: 769: 768: 742: 737: 734: 733: 724: 716:Main articles: 714: 698: 653:dependent types 628:and to require 626:lexical scoping 559:was created by 519:lambda calculus 358:Turing complete 354:Turing machines 330:lambda calculus 326: 236:in statistics, 182:lambda calculus 161:, be easier to 35: 28: 23: 22: 15: 12: 11: 5: 8297: 8287: 8286: 8281: 8267: 8266: 8255: 8244: 8231: 8228: 8224: 8223: 8221: 8220: 8215: 8210: 8205: 8200: 8194: 8192: 8186: 8185: 8183: 8182: 8177: 8172: 8167: 8161: 8160: 8155: 8150: 8145: 8139: 8137: 8133: 8132: 8125: 8124: 8117: 8110: 8102: 8093: 8092: 8090: 8089: 8084: 8079: 8074: 8069: 8064: 8059: 8054: 8049: 8044: 8038: 8036: 8028: 8027: 8025: 8024: 8019: 8014: 8009: 8004: 7982: 7977: 7972: 7962: 7957: 7952: 7947: 7942: 7937: 7927: 7921: 7919: 7913: 7912: 7910: 7909: 7904: 7899: 7894: 7889: 7884: 7879: 7874: 7869: 7864: 7859: 7849: 7844: 7839: 7833: 7831: 7815: 7814: 7811: 7810: 7808: 7807: 7802: 7787:Transformation 7784: 7779: 7774: 7769: 7764: 7759: 7754: 7749: 7744: 7739: 7734: 7725: 7720: 7715: 7710: 7705: 7700: 7695: 7690: 7685: 7680: 7675: 7673:Differentiable 7670: 7660: 7653:Automata-based 7650: 7645: 7639: 7637: 7631: 7630: 7628: 7627: 7622: 7617: 7612: 7607: 7602: 7592: 7587: 7581: 7579: 7573: 7572: 7570: 7569: 7564: 7559: 7554: 7544: 7538: 7536: 7530: 7529: 7527: 7526: 7520:Function-level 7517: 7508: 7503: 7498: 7493: 7488: 7483: 7478: 7473: 7468: 7463: 7453: 7447: 7445: 7430: 7424: 7423: 7420: 7419: 7417: 7416: 7411: 7406: 7401: 7396: 7382: 7380: 7364: 7363: 7361: 7360: 7355: 7350: 7345: 7340: 7335: 7333:Non-structured 7330: 7325: 7320: 7314: 7312: 7303: 7297: 7296: 7284: 7283: 7276: 7269: 7261: 7255: 7254: 7237: 7221: 7194: 7180: 7173: 7161: 7148: 7147: 7145: 7144:External links 7142: 7141: 7140: 7129: 7118: 7103: 7092: 7086: 7073: 7066: 7057:Graham, Paul. 7055: 7044: 7031: 7025: 7001: 6994: 6983: 6963: 6960: 6957: 6956: 6931: 6907: 6887: 6865: 6834: 6810: 6788: 6766: 6742: 6717: 6693: 6671: 6647: 6640: 6618: 6599: 6571: 6544: 6523: 6495: 6476: 6462: 6434: 6431:on 2005-10-16. 6423:(March 2003). 6404: 6377:(1): 131–143. 6354: 6330: 6306: 6296: 6281: 6253: 6247:978-0321356680 6246: 6236:Effective Java 6224: 6209: 6178: 6163: 6142: 6129:(2009-04-21). 6118: 6103: 6079: 6065: 6051: 5986:(2): 129–135. 5963: 5939: 5915: 5893: 5872: 5865: 5847: 5822: 5798: 5774: 5750: 5726: 5691: 5666: 5635: 5621: 5598: 5574: 5553: 5544: 5519: 5490: 5476:Hughes, John. 5468: 5465:on 2006-12-29. 5457: 5422: 5398: 5383:"OCaml Manual" 5374: 5351: 5336: 5330:10.1.1.31.3590 5311: 5289: 5274: 5263:(3): 257–267. 5247: 5244:on 2016-04-07. 5217: 5196:(March 1993). 5182: 5170: 5159:(7): 751–768. 5147:(2004-07-28). 5136: 5122:Archived from 5110: 5095: 5069: 5048: 5027: 5007: 4973: 4964: 4943: 4928: 4907: 4904:on 2023-04-19. 4885: 4876: 4867: 4858: 4845:(8): 613–641. 4825: 4778: 4731: 4684: 4669: 4630: 4620:Logic Theorist 4602:The memoir of 4595: 4580: 4549: 4504: 4478:McCarthy, John 4469: 4423: 4396: 4353: 4333: 4301: 4274: 4250: 4232: 4221:on 30 May 2009 4199: 4192: 4174: 4167: 4140: 4113: 4087: 4065: 4047:Mertz, David. 4039: 4017: 4010: 3989: 3968: 3957:Opensource.com 3943: 3910: 3879: 3848: 3809: 3779: 3742: 3707:(4): 553–564. 3688: 3668: 3624: 3617: 3588: 3561: 3530: 3501: 3477: 3446: 3415: 3378: 3345: 3324: 3291:(3): 359–411. 3264: 3263: 3261: 3258: 3257: 3256: 3251: 3246: 3241: 3236: 3231: 3226: 3220: 3219: 3203: 3200: 3175: 3172: 3031:fault-tolerant 3014: 3011: 2986: 2983: 2971: 2968: 2934: 2931: 2929: 2926: 2680: 2593: 2553: 2476: 2403: 2326: 2283: 2273: 2270: 2199:Visual Basic 9 2140: 2137: 2121:loop unrolling 1955: 1886: 1868: 1865: 1813:shared-nothing 1728: 1725: 1721:effect systems 1678: 1675: 1549: 1413: 1400: 1397: 1380: 1377: 1337:Main article: 1334: 1331: 1222:Main article: 1219: 1216: 1177:certified code 1167:. Through the 1134:type inference 1094:Main article: 1091: 1088: 1048: 1036:strict (eager) 1028:Main article: 1025: 1022: 949:stack overflow 929:tail recursion 902:Main article: 899: 896: 890:. C++11 added 875: 874: 866: 855: 840: 829:Pure functions 822:Main article: 819: 818:Pure functions 816: 812:natural number 776: 767:of a function 752: 749: 745: 741: 713: 710: 697: 694: 637:Per Martin-Löf 635:In the 1980s, 602:In the 1970s, 488:Arthur Whitney 325: 322: 274:mutable values 139:pure functions 26: 9: 6: 4: 3: 2: 8296: 8285: 8282: 8280: 8277: 8276: 8274: 8262: 8256: 8251: 8245: 8240: 8234: 8233: 8219: 8216: 8214: 8211: 8209: 8206: 8204: 8201: 8199: 8196: 8195: 8193: 8191: 8187: 8181: 8178: 8176: 8173: 8171: 8168: 8166: 8163: 8162: 8159: 8156: 8154: 8151: 8149: 8146: 8144: 8141: 8140: 8138: 8134: 8130: 8123: 8118: 8116: 8111: 8109: 8104: 8103: 8100: 8088: 8085: 8083: 8080: 8078: 8075: 8073: 8070: 8068: 8065: 8063: 8060: 8058: 8057:Data-oriented 8055: 8053: 8050: 8048: 8045: 8043: 8040: 8039: 8037: 8035: 8029: 8023: 8020: 8018: 8015: 8013: 8010: 8008: 8005: 8002: 7998: 7994: 7990: 7986: 7983: 7981: 7978: 7976: 7973: 7970: 7966: 7963: 7961: 7958: 7956: 7955:Homoiconicity 7953: 7951: 7948: 7946: 7943: 7941: 7938: 7935: 7931: 7928: 7926: 7923: 7922: 7920: 7918: 7914: 7908: 7905: 7903: 7900: 7898: 7895: 7893: 7890: 7888: 7885: 7883: 7880: 7878: 7875: 7873: 7870: 7868: 7865: 7863: 7862:Concurrent OO 7860: 7857: 7853: 7850: 7848: 7845: 7843: 7840: 7838: 7835: 7834: 7832: 7830: 7825: 7820: 7816: 7806: 7803: 7800: 7796: 7792: 7788: 7785: 7783: 7780: 7778: 7775: 7773: 7770: 7768: 7765: 7763: 7760: 7758: 7757:Set-theoretic 7755: 7753: 7750: 7748: 7745: 7743: 7740: 7738: 7737:Probabilistic 7735: 7733: 7729: 7726: 7724: 7721: 7719: 7716: 7714: 7711: 7709: 7706: 7704: 7701: 7699: 7696: 7694: 7691: 7689: 7686: 7684: 7681: 7679: 7676: 7674: 7671: 7668: 7664: 7661: 7658: 7654: 7651: 7649: 7646: 7644: 7641: 7640: 7638: 7636: 7632: 7626: 7623: 7621: 7618: 7616: 7613: 7611: 7608: 7606: 7603: 7600: 7596: 7593: 7591: 7588: 7586: 7583: 7582: 7580: 7578: 7574: 7568: 7565: 7563: 7560: 7558: 7555: 7552: 7548: 7545: 7543: 7540: 7539: 7537: 7535: 7531: 7525: 7521: 7518: 7516: 7515:Concatenative 7512: 7509: 7507: 7504: 7502: 7499: 7497: 7494: 7492: 7489: 7487: 7484: 7482: 7479: 7477: 7474: 7472: 7469: 7467: 7464: 7461: 7457: 7454: 7452: 7449: 7448: 7446: 7443: 7438: 7434: 7431: 7429: 7425: 7415: 7412: 7410: 7407: 7405: 7402: 7400: 7397: 7395: 7391: 7387: 7384: 7383: 7381: 7378: 7374: 7369: 7365: 7359: 7356: 7354: 7351: 7349: 7346: 7344: 7341: 7339: 7336: 7334: 7331: 7329: 7326: 7324: 7321: 7319: 7316: 7315: 7313: 7311: 7307: 7304: 7302: 7298: 7293: 7289: 7282: 7277: 7275: 7270: 7268: 7263: 7262: 7259: 7253: 7249: 7245: 7241: 7238: 7227: 7222: 7212: 7207: 7206: 7202: 7198: 7183: 7138: 7134: 7130: 7127: 7123: 7119: 7116: 7115:Prentice Hall 7112: 7108: 7104: 7100: 7099: 7093: 7089: 7083: 7079: 7074: 7071: 7067: 7064: 7063:Prentice Hall 7060: 7056: 7052: 7051: 7045: 7042: 7038: 7037: 7032: 7028: 7022: 7018: 7014: 7010: 7006: 7002: 6999: 6995: 6992: 6988: 6984: 6980: 6979: 6974: 6970: 6966: 6965: 6946: 6942: 6935: 6921: 6917: 6911: 6904: 6900: 6899:Triangulation 6896: 6891: 6876: 6869: 6861: 6860: 6855: 6851: 6847: 6841: 6839: 6823: 6817: 6815: 6798: 6792: 6776: 6770: 6756: 6752: 6746: 6732: 6728: 6721: 6707: 6703: 6697: 6684: 6683: 6675: 6661: 6657: 6651: 6643: 6641:9781785281372 6637: 6633: 6629: 6622: 6614: 6610: 6603: 6589:on 2010-12-21 6588: 6584: 6583: 6575: 6557: 6556: 6548: 6534: 6527: 6513:on 2009-10-17 6512: 6508: 6507: 6499: 6492: 6488: 6485: 6480: 6472: 6466: 6452:on 2009-10-17 6451: 6447: 6446: 6438: 6430: 6426: 6422: 6418: 6414: 6408: 6400: 6396: 6392: 6388: 6384: 6380: 6376: 6372: 6365: 6358: 6344: 6340: 6334: 6320: 6316: 6310: 6300: 6292: 6285: 6278: 6267: 6263: 6257: 6249: 6243: 6238: 6237: 6228: 6220: 6213: 6198:on 2013-04-14 6197: 6193: 6189: 6182: 6174: 6167: 6152: 6146: 6132: 6128: 6122: 6114: 6107: 6093: 6089: 6083: 6075: 6069: 6061: 6055: 6048: 6044: 6032:on 2007-10-16 6031: 6027: 6023: 6020:David Mertz. 6009:on 2011-07-19 6005: 6001: 5997: 5993: 5989: 5985: 5981: 5974: 5967: 5953: 5949: 5943: 5929: 5925: 5919: 5906: 5905: 5897: 5882: 5876: 5868: 5862: 5858: 5851: 5836: 5832: 5826: 5812: 5808: 5802: 5788: 5784: 5778: 5764: 5760: 5754: 5740: 5736: 5730: 5722: 5718: 5714: 5710: 5706: 5702: 5695: 5681:on 2013-05-20 5680: 5676: 5670: 5654: 5650: 5646: 5639: 5624: 5618: 5614: 5613: 5608: 5602: 5588: 5584: 5578: 5564: 5557: 5548: 5534: 5530: 5523: 5517: 5516:0-521-66350-4 5513: 5509: 5505: 5504:Chris Okasaki 5501: 5500: 5494: 5486: 5479: 5472: 5464: 5460: 5458:9781595930316 5454: 5450: 5446: 5442: 5435: 5434: 5426: 5412: 5408: 5402: 5388: 5387:caml.inria.fr 5384: 5378: 5370: 5366: 5362: 5355: 5347: 5340: 5331: 5326: 5322: 5315: 5307: 5300: 5293: 5285: 5278: 5270: 5266: 5262: 5258: 5251: 5240: 5233: 5232: 5227: 5221: 5212: 5207: 5203: 5199: 5195: 5189: 5187: 5179: 5174: 5166: 5162: 5158: 5154: 5150: 5146: 5140: 5126:on 2006-03-03 5125: 5121: 5114: 5106: 5102: 5098: 5092: 5088: 5084: 5080: 5073: 5058: 5052: 5037: 5031: 5020: 5014: 5012: 4996:on 2006-08-27 4995: 4991: 4990:(August 1994) 4989: 4984: 4977: 4968: 4960: 4959: 4954: 4947: 4939: 4932: 4924: 4923: 4918: 4911: 4903: 4899: 4895: 4889: 4880: 4871: 4862: 4853: 4848: 4844: 4840: 4836: 4829: 4821: 4817: 4812: 4807: 4803: 4799: 4795: 4794: 4789: 4782: 4774: 4770: 4765: 4760: 4756: 4752: 4748: 4747: 4742: 4735: 4727: 4723: 4718: 4713: 4709: 4705: 4701: 4700: 4695: 4688: 4680: 4673: 4664: 4659: 4655: 4651: 4647: 4646: 4641: 4634: 4627: 4626: 4621: 4617: 4616:0-465-04640-1 4613: 4609: 4605: 4599: 4591: 4587: 4583: 4577: 4573: 4569: 4562: 4561: 4553: 4545: 4541: 4537: 4533: 4529: 4525: 4518: 4514: 4513:John McCarthy 4508: 4500: 4496: 4492: 4485: 4484: 4480:(June 1978). 4479: 4473: 4465: 4461: 4457: 4453: 4449: 4445: 4441: 4437: 4433: 4427: 4410: 4409: 4400: 4392: 4388: 4384: 4380: 4376: 4372: 4368: 4364: 4357: 4343: 4337: 4330: 4320:on 2012-06-19 4319: 4315: 4311: 4305: 4289: 4285: 4278: 4264: 4260: 4254: 4246: 4242: 4236: 4217: 4210: 4203: 4195: 4193:9781940111056 4189: 4185: 4178: 4170: 4164: 4160: 4156: 4155: 4150: 4144: 4130: 4126: 4120: 4118: 4104:on 2021-10-30 4103: 4099: 4098: 4091: 4083: 4079: 4075: 4069: 4054: 4050: 4043: 4028: 4021: 4013: 4007: 4003: 3999: 3993: 3978: 3972: 3958: 3954: 3947: 3939: 3935: 3930: 3925: 3921: 3914: 3900:on 2009-10-17 3899: 3895: 3894: 3886: 3884: 3869:on 2015-07-08 3868: 3864: 3863: 3855: 3853: 3838: 3834: 3830: 3829: 3824: 3818: 3816: 3814: 3806: 3796: 3792: 3786: 3784: 3769:on 2011-10-08 3765: 3758: 3757: 3749: 3747: 3738: 3732: 3724: 3720: 3715: 3710: 3706: 3702: 3695: 3693: 3678: 3672: 3664: 3660: 3655: 3650: 3646: 3642: 3638: 3631: 3629: 3620: 3618:9781595937667 3614: 3610: 3606: 3602: 3595: 3593: 3578: 3574: 3568: 3566: 3551:on 2012-12-15 3547: 3540: 3534: 3520:on 2007-11-13 3519: 3515: 3511: 3505: 3490: 3484: 3482: 3467:on 2010-05-27 3466: 3462: 3461: 3453: 3451: 3436:on 2010-12-21 3435: 3431: 3430: 3422: 3420: 3405:on 2011-06-29 3404: 3400: 3396: 3392: 3385: 3383: 3367: 3363: 3359: 3352: 3350: 3341: 3337: 3331: 3329: 3314:on 2016-01-31 3310: 3306: 3302: 3298: 3294: 3290: 3286: 3279: 3275: 3269: 3265: 3255: 3252: 3250: 3247: 3245: 3242: 3240: 3237: 3235: 3232: 3230: 3227: 3225: 3222: 3221: 3217: 3211: 3206: 3199: 3197: 3192: 3190: 3189: 3183: 3181: 3171: 3169: 3165: 3161: 3157: 3153: 3152:Gröbner basis 3147: 3146: 3142: 3138: 3134: 3130: 3126: 3122: 3121:ClojureScript 3118: 3114: 3110: 3106: 3102: 3098: 3093: 3091: 3087: 3083: 3079: 3075: 3071: 3067: 3063: 3059: 3055: 3051: 3047: 3043: 3039: 3035: 3032: 3028: 3024: 3020: 3010: 3008: 3004: 3000: 2996: 2995:peer-reviewed 2992: 2982: 2980: 2976: 2967: 2965: 2964:S-expressions 2961: 2957: 2953: 2951: 2947: 2943: 2939: 2925: 2678: 2676: 2671: 2669: 2661: 2591: 2551: 2474: 2401: 2399: 2324: 2281: 2278: 2269: 2265: 2263: 2259: 2255: 2251: 2247: 2244: 2239: 2237: 2232: 2230: 2225: 2223: 2219: 2214: 2212: 2208: 2204: 2200: 2196: 2188: 2184: 2180: 2176: 2172: 2168: 2164: 2160: 2156: 2152: 2150: 2146: 2136: 2134: 2130: 2126: 2122: 2118: 2114: 2109: 2107: 2103: 2091: 2087: 2083: 2073: 1953: 1951: 1947: 1944: 1940: 1936: 1932: 1884: 1882: 1878: 1874: 1864: 1861: 1857: 1853: 1849: 1847: 1843: 1839: 1835: 1831: 1822: 1818: 1814: 1809: 1808: 1804: 1800: 1796: 1793: 1789: 1785: 1780: 1778: 1774: 1770: 1766: 1762: 1758: 1754: 1750: 1746: 1742: 1738: 1734: 1724: 1722: 1718: 1714: 1709: 1707: 1702: 1698: 1696: 1692: 1688: 1683: 1674: 1672: 1668: 1547: 1411: 1408: 1406: 1396: 1392: 1390: 1386: 1376: 1374: 1370: 1366: 1362: 1358: 1354: 1350: 1346: 1340: 1330: 1328: 1324: 1281: 1279: 1235: 1230: 1225: 1215: 1213: 1209: 1205: 1201: 1196: 1194: 1190: 1186: 1182: 1178: 1174: 1170: 1166: 1162: 1158: 1155:are based on 1154: 1150: 1146: 1142: 1137: 1135: 1131: 1127: 1123: 1119: 1115: 1111: 1107: 1103: 1097: 1087: 1085: 1081: 1077: 1073: 1071: 1067: 1063: 1059: 1054: 1047: 1045: 1041: 1037: 1031: 1021: 1019: 1015: 1011: 1007: 1003: 999: 995: 994:inconsistency 991: 987: 984: 980: 975: 973: 969: 965: 961: 960:catamorphisms 956: 954: 950: 946: 941: 936: 934: 930: 926: 922: 918: 914: 910: 905: 895: 889: 885: 881: 872: 871:deforestation 867: 864: 860: 856: 853: 849: 845: 841: 838: 837: 836: 834: 830: 825: 824:Pure function 815: 813: 809: 805: 801: 796: 793: 788: 774: 766: 750: 747: 743: 739: 732: 728: 723: 719: 709: 707: 703: 693: 690: 688: 684: 680: 675: 673: 672:open standard 669: 665: 660: 658: 654: 651:expressed as 650: 646: 643:(also called 642: 638: 633: 631: 627: 623: 622: 617: 616:Lambda Papers 613: 609: 605: 604:Guy L. Steele 600: 598: 594: 590: 586: 582: 578: 574: 570: 566: 562: 558: 553: 551: 547: 542: 538: 534: 530: 526: 524: 520: 516: 512: 508: 504: 499: 497: 493: 489: 485: 481: 477: 473: 469: 468:9780471430148 465: 461: 457: 453: 449: 447: 443: 439: 435: 433: 429: 425: 421: 417: 413: 409: 405: 401: 400:John McCarthy 397: 393: 389: 384: 382: 378: 373: 371: 370:Haskell Curry 367: 363: 359: 355: 351: 347: 343: 339: 338:formal system 335: 334:Alonzo Church 331: 321: 319: 315: 311: 307: 303: 299: 295: 291: 287: 283: 279: 275: 271: 267: 263: 259: 255: 251: 247: 243: 239: 235: 231: 227: 223: 219: 215: 211: 207: 203: 199: 195: 191: 187: 183: 179: 174: 172: 168: 164: 160: 156: 152: 148: 144: 140: 136: 133:mathematical 132: 131:deterministic 128: 123: 121: 117: 113: 109: 105: 101: 98:), passed as 97: 93: 88: 86: 85:running state 82: 79: 75: 71: 67: 63: 59: 56: 52: 48: 44: 40: 33: 19: 8264:}} 8258:{{ 8253:}} 8247:{{ 8242:}} 8236:{{ 8062:Event-driven 7466:Higher-order 7436: 7394:Object-based 7239: 7229:. Retrieved 7214:. Retrieved 7209:Ford, Neal. 7132: 7121: 7110: 7097: 7077: 7069: 7058: 7053:. MIT Press. 7049: 7034: 7016: 6997: 6986: 6981:. MIT Press. 6977: 6969:Abelson, Hal 6948:. Retrieved 6944: 6934: 6923:. Retrieved 6919: 6910: 6898: 6890: 6879:. Retrieved 6868: 6858: 6846:Abelson, Hal 6825:. Retrieved 6801:. Retrieved 6791: 6779:. Retrieved 6769: 6758:. Retrieved 6754: 6745: 6734:. Retrieved 6730: 6720: 6709:. Retrieved 6705: 6696: 6686:, retrieved 6681: 6674: 6663:. Retrieved 6659: 6650: 6627: 6621: 6612: 6602: 6591:. Retrieved 6587:the original 6581: 6574: 6563:. Retrieved 6554: 6547: 6536:. Retrieved 6526: 6515:. Retrieved 6511:the original 6505: 6498: 6479: 6465: 6454:. Retrieved 6450:the original 6444: 6437: 6429:the original 6407: 6374: 6370: 6357: 6346:. Retrieved 6342: 6333: 6322:. Retrieved 6319:stallman.org 6318: 6309: 6299: 6290: 6284: 6275: 6269:. Retrieved 6265: 6256: 6235: 6227: 6212: 6200:. Retrieved 6196:the original 6191: 6181: 6172: 6166: 6155:. Retrieved 6145: 6134:. Retrieved 6121: 6113:"Popularity" 6106: 6095:. Retrieved 6091: 6082: 6068: 6054: 6034:. Retrieved 6030:the original 6025: 6011:. Retrieved 6004:the original 5983: 5979: 5966: 5955:. Retrieved 5951: 5942: 5931:. Retrieved 5927: 5918: 5908:, retrieved 5903: 5896: 5885:. Retrieved 5875: 5856: 5850: 5839:. Retrieved 5837:. 2023-01-28 5834: 5825: 5814:. Retrieved 5810: 5801: 5790:. Retrieved 5786: 5777: 5766:. Retrieved 5762: 5753: 5742:. Retrieved 5738: 5729: 5704: 5700: 5694: 5683:. Retrieved 5679:the original 5669: 5657:. Retrieved 5653:the original 5648: 5638: 5626:. Retrieved 5611: 5601: 5590:. Retrieved 5586: 5577: 5566:. Retrieved 5561:Newbern, J. 5556: 5547: 5536:. Retrieved 5532: 5522: 5498: 5493: 5471: 5463:the original 5432: 5425: 5414:. Retrieved 5410: 5401: 5390:. Retrieved 5386: 5377: 5368: 5354: 5339: 5320: 5314: 5305: 5292: 5283: 5277: 5260: 5256: 5250: 5239:the original 5230: 5220: 5197: 5173: 5156: 5152: 5145:Turner, D.A. 5139: 5128:. Retrieved 5124:the original 5113: 5078: 5072: 5061:. Retrieved 5051: 5040:. Retrieved 5030: 4998:. Retrieved 4994:the original 4986: 4976: 4967: 4956: 4946: 4940:. Computing. 4931: 4922:Ars Technica 4920: 4910: 4902:the original 4897: 4888: 4879: 4870: 4861: 4842: 4838: 4828: 4797: 4791: 4781: 4750: 4744: 4734: 4703: 4697: 4687: 4678: 4672: 4649: 4643: 4633: 4623: 4607: 4598: 4559: 4552: 4527: 4523: 4507: 4490: 4482: 4472: 4442:(2): 56–68. 4439: 4435: 4426: 4414:. Retrieved 4407: 4399: 4366: 4362: 4356: 4345:. Retrieved 4336: 4328: 4322:. Retrieved 4318:the original 4313: 4304: 4292:. Retrieved 4288:the original 4277: 4266:. Retrieved 4262: 4253: 4244: 4235: 4223:. Retrieved 4216:the original 4202: 4183: 4177: 4153: 4143: 4132:. Retrieved 4128: 4106:, retrieved 4102:the original 4096: 4090: 4081: 4068: 4056:. Retrieved 4052: 4042: 4030:. Retrieved 4020: 4001: 3992: 3981:. Retrieved 3971: 3960:. Retrieved 3956: 3946: 3919: 3913: 3902:. Retrieved 3898:the original 3892: 3871:. Retrieved 3867:the original 3861: 3840:. Retrieved 3827: 3804: 3798:. Retrieved 3795:Haskell Wiki 3794: 3771:. Retrieved 3764:the original 3755: 3731:cite journal 3704: 3700: 3680:. Retrieved 3671: 3644: 3640: 3600: 3580:. Retrieved 3576: 3553:. Retrieved 3546:the original 3533: 3522:. Retrieved 3518:the original 3513: 3504: 3493:. Retrieved 3469:. Retrieved 3465:the original 3459: 3438:. Retrieved 3434:the original 3428: 3426:Kidd, Eric. 3407:. Retrieved 3403:the original 3398: 3394: 3370:. Retrieved 3365: 3361: 3336:Hughes, John 3316:. Retrieved 3309:the original 3288: 3284: 3268: 3193: 3186: 3184: 3180:universities 3177: 3148: 3144: 3137:Font Awesome 3117:Data science 3094: 3016: 2988: 2979:zeroth-order 2975:Spreadsheets 2973: 2970:Spreadsheets 2954: 2942:Lisp dialect 2936: 2933:Text editors 2928:Applications 2923: 2672: 2667: 2659: 2653: 2589: 2548: 2472: 2397: 2395: 2322: 2275: 2266: 2258:catamorphism 2240: 2233: 2226: 2215: 2153: 2142: 2135:at runtime. 2116: 2110: 2063: 1928: 1870: 1859: 1856:memory leaks 1850: 1810: 1806: 1794: 1791: 1781: 1730: 1710: 1703: 1699: 1684: 1680: 1663: 1545: 1409: 1402: 1393: 1389:side effects 1382: 1342: 1327:side effects 1322: 1282: 1277: 1268:with either 1231: 1227: 1197: 1138: 1099: 1090:Type systems 1074: 1055: 1051: 1039: 1035: 1033: 1006:well-founded 976: 964:anamorphisms 957: 937: 907: 887: 876: 833:side effects 827: 797: 789: 725: 699: 691: 676: 661: 645:constructive 644: 634: 619: 601: 569:David Turner 561:Robin Milner 554: 537:Turing Award 535:in his 1977 527: 509:, the first 507:SECD machine 503:Peter Landin 500: 459: 450: 445: 436: 385: 374: 327: 232:in the Web, 175: 153:, common in 147:side effects 124: 89: 42: 36: 8158:Interpreted 8072:Intentional 8052:Data-driven 8034:of concerns 7993:Inferential 7980:Multi-stage 7960:Interactive 7837:Actor-based 7824:distributed 7767:Stack-based 7567:Synchronous 7524:Value-level 7511:Applicative 7428:Declarative 7386:Class-based 7101:. O'Reilly. 6561:. CUFP 2006 5649:Code Commit 5628:10 February 5533:Polymatheia 5323:: 176–185. 4804:: 157–166. 4757:: 158–165. 4656:: 308–320. 4610:pp.189-190 4416:10 February 3823:Hudak, Paul 3274:Hudak, Paul 3113:Standard ML 2856:grandparent 2682:grandparent 1939:Ryzen 7900X 1931:benchmarked 1834:actor model 1713:Hoare logic 1373:persistence 1369:logarithmic 1361:binary heap 1096:Type system 1076:Hughes 1984 1004:allow only 998:type system 986:undecidable 863:thread-safe 852:memoization 848:idempotence 704:(including 597:Standard ML 541:von Neumann 529:John Backus 472:John Backus 432:Common Lisp 350:Alan Turing 344:built from 342:computation 186:Common Lisp 112:declarative 96:identifiers 70:expressions 8273:Categories 8190:Generation 8170:High-level 8047:Components 8032:Separation 8007:Reflective 8001:by example 7945:Extensible 7819:Concurrent 7795:Production 7782:Templating 7762:Simulation 7747:Scientific 7667:Spacecraft 7595:Constraint 7590:Answer set 7542:Flow-based 7442:comparison 7437:Functional 7409:Persistent 7373:comparison 7338:Procedural 7310:Structured 7301:Imperative 7231:2013-02-24 7216:2021-11-10 7197:Audio help 7188:2011-08-25 6950:2024-04-29 6925:2024-04-29 6881:2020-08-14 6760:2024-04-29 6736:2024-04-29 6711:2024-04-29 6706:StackShare 6688:2024-04-29 6665:2024-04-29 6660:StackShare 6593:2009-08-29 6565:2009-08-29 6538:2009-08-29 6517:2009-08-29 6456:2009-08-29 6348:2024-04-29 6324:2024-04-29 6271:2021-01-04 6188:"Closures" 6157:2011-07-31 6136:2012-09-27 6097:2021-01-04 6092:golang.org 6036:2006-09-17 6013:2006-05-28 5957:2024-04-29 5933:2024-04-29 5910:2024-04-29 5887:2011-06-20 5841:2024-04-29 5816:2024-04-29 5792:2024-04-29 5768:2024-04-29 5744:2024-04-29 5685:2011-06-20 5592:2018-11-13 5568:2008-02-14 5538:2018-11-13 5416:2021-03-08 5392:2021-03-08 5130:2020-04-29 5096:0897919874 5063:2013-03-21 5059:. R6rs.org 5042:2013-03-21 5038:. R6rs.org 5000:August 31, 4710:: 89–101. 4432:Church, A. 4347:2021-06-16 4324:2012-02-21 4314:Scala Wiki 4268:2021-01-09 4134:2019-05-01 4108:2021-10-23 4084:: 249–264. 3983:2011-06-20 3962:2021-01-09 3904:2009-08-29 3873:2009-08-29 3842:2013-09-26 3800:2009-08-26 3773:2009-08-26 3682:2021-02-14 3582:2018-04-27 3555:2011-08-08 3524:2006-08-28 3495:2015-08-24 3471:2009-08-26 3440:2009-08-26 3409:2008-08-28 3372:2008-08-28 3318:2013-08-10 3129:PureScript 3005:, and the 2155:JavaScript 2149:Fortran 95 2102:allocation 2082:lo library 1937:tool on a 1933:using the 1863:cycles) . 1807:lifetimes. 1803:references 1717:uniqueness 1405:JavaScript 1357:hash table 1349:imperative 884:Fortran 95 765:derivative 639:developed 610:developed 531:presented 454:developed 388:high-level 386:The first 348:. In 1937 230:JavaScript 151:procedures 116:composable 81:statements 78:imperative 60:. It is a 8165:Low-level 7934:Inductive 7930:Automatic 7752:Scripting 7451:Recursive 6391:0956-7968 5904:samber/lo 5369:Icfp 2006 5325:CiteSeerX 4958:InfoWorld 4294:6 October 3938:1611-3349 3647:(3): 48. 3305:207637854 3174:Education 3072:control. 3070:telescope 2946:GNU Emacs 2892:elizabeth 2784:elizabeth 2517:elizabeth 2420:elizabeth 2398:backwards 2388:elizabeth 2297:elizabeth 2191:functools 1943:Leiningen 1935:Criterium 1795:immutable 1765:databases 1232:Consider 921:base case 913:recursion 909:Iteration 898:Recursion 892:constexpr 505:invented 480:Roger Hui 446:generator 408:recursive 402:while at 381:data type 145:or other 135:functions 108:data type 100:arguments 72:that map 58:functions 55:composing 8230:See also 8180:Esoteric 8153:Compiled 8148:Assembly 8087:Subjects 8077:Literate 8067:Features 8022:Template 8017:Symbolic 7989:Bayesian 7969:Hygienic 7829:parallel 7708:Modeling 7703:Low-code 7678:End-user 7615:Ontology 7547:Reactive 7534:Dataflow 7199: · 7015:(1972). 6975:(1985). 6852:(1985). 6827:28 April 6803:28 April 6781:28 April 6487:Archived 6399:29429059 6000:32346900 5721:34527406 5659:17 April 5510:, 1998, 5371:: 50–61. 5228:(2009). 5105:16812984 4898:OpenSCAD 4820:13409665 4773:15781851 4606:(1991), 4590:47047140 4515:(1960). 4464:15889861 4151:(2005). 4000:(1998). 3723:30955392 3338:(1984). 3202:See also 3119:, while 3050:WhatsApp 3042:Facebook 3027:Ericsson 3025:company 3013:Industry 2985:Academia 2222:closures 2216:In PHP, 2185:", and " 2125:Assembly 2106:inlining 2090:generics 2014:bit-and 1996:integer? 1792:formally 1761:matrices 1266:x=x * 10 1238:x=x * 10 1189:compiler 1185:Compcert 1132:, while 859:parallel 804:currying 696:Concepts 683:OpenSCAD 517:and the 515:ALGOL 60 482:created 178:academia 122:manner. 104:returned 51:applying 8143:Machine 8042:Aspects 7950:Generic 7940:Dynamic 7799:Pattern 7777:Tactile 7742:Quantum 7732:filters 7663:Command 7562:Streams 7557:Signals 7328:Modular 7186: ( 7157:minutes 7139:, 1996. 7128:, 1998. 7117:, 1996. 7065:, 1996. 7043:. 2005. 6993:, 1998. 6905:network 6903:TWiT.tv 6901:on the 6339:"Helix" 4726:6505810 4544:1489409 4456:2266170 4391:2317046 4383:2268280 4245:YouTube 4225:27 June 4186:. php. 4058:May 27, 4032:May 27, 3395:MacTech 3362:MacTech 3141:Allegro 3090:Haskell 3023:Swedish 2916:phillip 2847:charles 2805:phillip 2796:charles 2775:charles 2505:charles 2432:charles 2370:charles 2291:charles 2254:visitor 2067:.equals 1978::static 1950:Java VM 1903:.equals 1881:Clojure 1788:Clojure 1706:Clojure 1687:Haskell 1526:numList 1499:numList 1469:numList 1418:numList 1289:plusone 1256:yields 1210:and in 1153:Epigram 1149:Cayenne 1070:Haskell 1062:Miranda 945:Chicken 681:in the 668:Haskell 664:Miranda 575:at the 563:at the 420:Clojure 336:, is a 324:History 218:Haskell 194:Clojure 120:modular 8213:Fourth 8203:Second 7805:Visual 7772:System 7657:Action 7481:Strict 7252:part 3 7248:part 2 7244:part 1 7084:  7023:  6638:  6397:  6389:  6244:  6202:11 May 6047:Part 2 6043:Part 1 5998:  5928:go.dev 5863:  5719:  5619:  5514:  5455:  5327:  5103:  5093:  4818:  4771:  4724:  4614:  4588:  4578:  4542:  4462:  4454:  4389:  4381:  4190:  4165:  4129:Kotlin 4008:  3936:  3721:  3663:524392 3661:  3615:  3491:. 2015 3303:  3196:Scheme 3133:Elixir 3078:driver 3054:Scheme 3038:Nortel 3019:Erlang 3001:, the 2832:father 2811:mother 2790:father 2769:mother 2757:father 2742:parent 2730:mother 2715:parent 2703:parent 2697:parent 2666:means 2658:means 2634:mother 2616:mother 2576:mother 2570:mother 2481:mother 2441:mother 2408:mother 2364:mother 2331:mother 2303:mother 2285:mother 2211:Kotlin 2209:, and 2187:filter 2183:reduce 2175:lambda 2163:Python 2008:zero? 1972::added 1877:filter 1875:" or " 1860:et al. 1842:Elixir 1838:Erlang 1821:atomic 1797:data. 1741:Pascal 1691:monads 1623:reduce 1563:filter 1554:result 1520:result 1475:length 1430:result 1307:return 1278:is not 1151:, and 1122:Scheme 1068:, and 1014:codata 940:Scheme 612:Scheme 567:, and 466:  416:Scheme 316:, and 298:Python 286:Kotlin 250:XQuery 220:, and 210:Elixir 206:Erlang 202:Racket 190:Scheme 102:, and 74:values 8218:Fifth 8208:Third 8198:First 8136:Level 8082:Roles 7965:Macro 7728:Pipes 7648:Array 7625:Query 7577:Logic 7486:GADTs 7476:Total 7399:Agent 6632:Packt 6613:InfoQ 6559:(PDF) 6395:S2CID 6367:(PDF) 6304:2006. 6007:(PDF) 5996:S2CID 5976:(PDF) 5739:InfoQ 5717:S2CID 5481:(PDF) 5437:(PDF) 5302:(PDF) 5242:(PDF) 5235:(PDF) 5101:S2CID 5022:(PDF) 4816:S2CID 4800:(3). 4769:S2CID 4753:(3). 4722:S2CID 4706:(2). 4652:(4). 4586:S2CID 4564:(PDF) 4540:S2CID 4520:(PDF) 4487:(PDF) 4460:S2CID 4452:JSTOR 4387:S2CID 4379:JSTOR 4219:(PDF) 4212:(PDF) 3767:(PDF) 3760:(PDF) 3719:S2CID 3659:S2CID 3549:(PDF) 3542:(PDF) 3312:(PDF) 3301:S2CID 3281:(PDF) 3178:Many 3097:Scala 3082:robot 3074:OCaml 2956:Helix 2938:Emacs 2904:harry 2880:harry 2838:harry 2826:diana 2817:harry 2654:Here 2541:diana 2529:harry 2465:harry 2453:diana 2355:diana 2337:harry 2315:diana 2309:harry 2260:, or 2241:Many 2207:C++11 2205:3.0, 2197:5.3, 2077:even? 2059:))))) 2038:throw 1963:even? 1960:defn 1929:When 1891:even? 1769:array 1753:Clean 1749:OCaml 1669:(see 1641:=> 1605:=> 1572:=> 1551:const 1415:const 1353:array 1212:Scala 1208:OCaml 1206:, in 1187:is a 1066:Clean 968:loops 925:stack 814:one. 593:OCaml 523:ISWIM 428:Julia 424:Dylan 314:Scala 278:C++11 214:OCaml 163:debug 143:state 137:, or 66:trees 45:is a 7730:and 7377:list 7082:ISBN 7021:ISBN 6829:2020 6805:2020 6783:2020 6636:ISBN 6387:ISSN 6242:ISBN 6204:2013 5861:ISBN 5661:2012 5630:2013 5617:ISBN 5512:ISBN 5453:ISBN 5091:ISBN 5002:2006 4988:Byte 4612:ISBN 4576:ISBN 4418:2013 4296:2020 4227:2009 4188:ISBN 4163:ISBN 4060:2006 4034:2006 4006:ISBN 3934:ISSN 3737:link 3613:ISBN 3368:(12) 3160:Caml 3109:Lisp 3068:and 3058:Lisp 3048:and 2675:Ciao 2662:and 2262:fold 2229:Java 2181:", " 2177:", " 2169:had 2165:and 2147:and 2115:are 2113:Rust 2084:for 2072:Java 2050:str 1981:true 1946:REPL 1846:Akka 1799:Rust 1775:and 1751:and 1739:and 1715:and 1466:< 1365:maps 1359:and 1260:and 1248:was 1145:Agda 962:and 938:The 888:pure 720:and 687:CGAL 606:and 595:and 589:Hope 573:SASL 464:ISBN 426:and 418:and 392:Lisp 368:and 328:The 310:Raku 306:Rust 290:Perl 270:Yacc 264:and 256:for 254:XSLT 244:and 226:Lean 167:test 165:and 159:bugs 114:and 53:and 7635:DSL 6379:doi 5988:doi 5709:doi 5502:by 5445:doi 5441:ACM 5265:doi 5206:doi 5202:ACM 5161:doi 5083:doi 4847:doi 4806:doi 4759:doi 4712:doi 4658:doi 4568:doi 4532:doi 4495:doi 4444:doi 4371:doi 3924:doi 3833:doi 3709:doi 3649:doi 3605:doi 3293:doi 3139:or 3127:or 3125:Elm 2962:as 2960:AST 2712:)). 2668:and 2585:)). 2234:In 2227:In 2195:PHP 2179:map 2159:Lua 2098:for 2094:map 1990:if 1909:mod 1873:map 1844:or 1733:CPU 1673:). 1596:map 1584:=== 1508:=== 1448:let 1442:for 1427:let 1295:int 1286:int 1274:100 1272:or 1262:100 1141:Coq 1038:or 1002:Coq 970:in 880:gcc 846:or 802:or 679:CAD 581:NPL 474:'s 456:APL 340:of 294:PHP 266:Lex 262:SQL 258:XML 68:of 37:In 8275:: 7999:, 7995:, 7991:, 7797:, 7793:, 7522:, 7513:, 7392:, 7388:, 7375:, 7250:, 7246:, 7155:28 7109:. 7039:. 7011:; 7007:; 6971:; 6943:. 6918:. 6856:. 6848:; 6837:^ 6813:^ 6753:. 6729:. 6704:. 6658:. 6634:. 6611:. 6419:; 6415:; 6393:. 6385:. 6375:17 6373:. 6369:. 6341:. 6317:. 6274:. 6264:. 6190:. 6090:. 6045:, 6024:. 6018:; 5994:. 5984:14 5982:. 5978:. 5950:. 5926:. 5833:. 5809:. 5785:. 5761:. 5737:. 5715:. 5705:17 5703:. 5647:. 5585:. 5531:. 5506:, 5483:. 5451:. 5443:. 5409:. 5385:. 5367:. 5261:22 5259:. 5185:^ 5157:10 5155:. 5151:. 5099:. 5089:. 5010:^ 4985:. 4955:. 4919:. 4896:. 4843:21 4841:. 4837:. 4814:. 4796:. 4790:. 4767:. 4749:. 4743:. 4720:. 4702:. 4696:. 4648:. 4642:. 4584:. 4574:. 4538:. 4526:. 4522:. 4489:. 4458:. 4450:. 4438:. 4385:. 4377:. 4365:. 4327:. 4312:. 4261:. 4243:. 4161:. 4157:. 4127:. 4116:^ 4076:; 4051:. 3955:. 3932:. 3882:^ 3851:^ 3812:^ 3803:. 3793:. 3782:^ 3745:^ 3733:}} 3729:{{ 3705:18 3703:. 3691:^ 3657:. 3645:52 3643:. 3639:. 3627:^ 3611:. 3591:^ 3575:. 3564:^ 3512:. 3480:^ 3449:^ 3418:^ 3397:. 3393:. 3381:^ 3364:. 3360:. 3348:^ 3327:^ 3299:. 3289:21 3287:. 3283:. 3191:. 3170:. 3123:, 3111:, 3107:, 3103:, 3101:F# 3099:, 3088:. 3052:. 3044:, 3040:, 3009:. 2871:). 2853:?- 2844::= 2823::= 2802::= 2781::= 2766:). 2754::= 2739:). 2727::= 2694::= 2670:. 2664:, 2660:if 2656::- 2649:). 2631:), 2613::- 2496:). 2478:?- 2456:). 2438:?- 2423:). 2405:?- 2379:). 2361:?- 2346:). 2328:?- 2318:). 2300:). 2264:. 2236:C# 2220:, 2213:. 2203:C# 2201:, 2167:Go 2161:, 2157:, 2108:. 2086:Go 2032:)) 1883:: 1848:. 1767:, 1659:); 1626:(( 1614:10 1532:10 1523:+= 1493:if 1484:++ 1323:is 1319:;} 1270:10 1258:10 1147:, 1143:, 1072:. 1064:, 1020:. 974:. 915:. 873:). 865:). 854:.) 787:. 599:. 557:ML 533:FP 498:. 476:FP 320:. 312:, 308:, 304:, 302:Go 300:, 296:, 292:, 288:, 284:, 282:C# 280:, 240:, 224:. 222:F# 216:, 212:, 208:, 204:, 200:, 196:, 192:, 188:, 173:. 41:, 8121:e 8114:t 8107:v 8003:) 7987:( 7971:) 7967:( 7936:) 7932:( 7858:) 7854:( 7826:, 7821:, 7801:) 7789:( 7669:) 7665:( 7659:) 7655:( 7601:) 7597:( 7553:) 7549:( 7462:) 7458:( 7444:) 7440:( 7379:) 7371:( 7294:) 7290:( 7280:e 7273:t 7266:v 7234:. 7219:. 7203:) 7195:( 7190:) 7159:) 7152:( 7090:. 7029:. 6953:. 6928:. 6884:. 6831:. 6807:. 6785:. 6763:. 6739:. 6714:. 6668:. 6644:. 6615:. 6596:. 6568:. 6541:. 6520:. 6459:. 6401:. 6381:: 6351:. 6327:. 6250:. 6221:. 6206:. 6175:. 6160:. 6139:. 6115:. 6100:. 6076:. 6049:) 6041:( 6039:. 6016:. 5990:: 5960:. 5936:. 5890:. 5869:. 5844:. 5819:. 5795:. 5771:. 5747:. 5723:. 5711:: 5688:. 5663:. 5632:. 5595:. 5571:. 5541:. 5487:. 5447:: 5419:. 5395:. 5348:. 5333:. 5271:. 5267:: 5214:. 5208:: 5167:. 5163:: 5133:. 5107:. 5085:: 5066:. 5045:. 5004:. 4961:. 4925:. 4855:. 4849:: 4822:. 4808:: 4798:9 4775:. 4761:: 4751:8 4728:. 4714:: 4704:8 4666:. 4660:: 4650:6 4592:. 4570:: 4546:. 4534:: 4528:3 4501:. 4497:: 4466:. 4446:: 4440:5 4420:. 4393:. 4373:: 4367:2 4350:. 4298:. 4271:. 4229:. 4196:. 4171:. 4137:. 4062:. 4036:. 4014:. 3986:. 3965:. 3940:. 3926:: 3907:. 3876:. 3845:. 3835:: 3776:. 3739:) 3725:. 3711:: 3685:. 3665:. 3651:: 3621:. 3607:: 3585:. 3558:. 3527:. 3498:. 3474:. 3443:. 3412:. 3399:3 3375:. 3366:3 3342:. 3321:. 3295:: 2919:. 2913:= 2910:Y 2907:, 2901:= 2898:X 2895:. 2889:= 2886:Y 2883:, 2877:= 2874:X 2868:Y 2865:, 2862:X 2859:( 2850:. 2841:) 2835:( 2829:. 2820:) 2814:( 2808:. 2799:) 2793:( 2787:. 2778:) 2772:( 2763:X 2760:( 2751:) 2748:X 2745:( 2736:X 2733:( 2724:) 2721:X 2718:( 2709:X 2706:( 2700:( 2691:) 2688:X 2685:( 2646:Y 2643:, 2640:Z 2637:( 2628:Z 2625:, 2622:X 2619:( 2610:) 2607:Y 2604:, 2601:X 2598:( 2582:X 2579:( 2573:( 2567:= 2564:) 2561:X 2558:( 2544:. 2538:= 2535:Y 2532:, 2526:= 2523:X 2520:. 2514:= 2511:Y 2508:, 2502:= 2499:X 2493:Y 2490:, 2487:X 2484:( 2468:. 2462:= 2459:X 2450:, 2447:X 2444:( 2435:. 2429:= 2426:X 2417:, 2414:X 2411:( 2391:. 2385:= 2382:X 2376:X 2373:, 2367:( 2358:. 2352:= 2349:X 2343:X 2340:, 2334:( 2312:, 2306:( 2294:, 2288:( 2145:D 2056:n 2047:( 2041:( 2035:( 2029:1 2026:) 2023:n 2017:( 2011:( 2005:( 2002:) 1999:n 1993:( 1987:( 1984:} 1969:{ 1957:( 1924:) 1921:0 1918:) 1915:2 1912:5 1906:( 1900:( 1897:) 1894:5 1888:( 1840:/ 1777:K 1773:J 1737:C 1656:0 1653:, 1650:b 1647:+ 1644:a 1638:) 1635:b 1632:, 1629:a 1620:. 1617:) 1611:* 1608:a 1602:a 1599:( 1593:. 1590:) 1587:0 1581:2 1578:% 1575:n 1569:n 1566:( 1560:. 1557:= 1541:} 1538:} 1535:; 1529:* 1517:{ 1514:) 1511:0 1505:2 1502:% 1496:( 1490:{ 1487:) 1481:i 1478:; 1472:. 1463:i 1460:; 1457:0 1454:= 1451:i 1445:( 1439:; 1436:0 1433:= 1424:; 1421:= 1316:1 1313:+ 1310:x 1304:{ 1301:) 1298:x 1292:( 1254:x 1250:1 1246:x 1242:x 1234:C 775:f 751:x 748:d 744:/ 740:d 496:Q 492:K 484:J 462:( 268:/ 252:/ 246:Q 242:K 238:J 234:R 34:. 20:)

Index

Functional programming languages
Procedural programming
computer science
programming paradigm
applying
composing
functions
declarative programming
trees
expressions
values
imperative
statements
running state
first-class citizens
identifiers
arguments
returned
data type
declarative
composable
modular
purely functional programming
deterministic
functions
pure functions
state
side effects
procedures
imperative programming

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.