Knowledge

Evaluation strategy

Source đź“ť

1063:) the variable used as argument—something that will be seen by its caller. Call by reference can therefore be used to provide an additional channel of communication between the called function and the calling function. Pass by reference can significantly improve performance: calling a function with a many-megabyte structure as an argument does not have to copy the large structure, only the reference to the structure (which is generally a machine word and only a few bytes). However, a call-by-reference language makes it more difficult for a programmer to track the effects of a function call, and may introduce subtle bugs. 3348: 1885:", or "objects", have reference semantics, and it is the addresses of these pointers that are passed into the function. Like call by value, the value of the address passed is a copy, and direct assignment to the parameter of the function overwrites the copy and is not visible to the calling function. Like call by reference, mutating the target of the pointer is visible to the calling function. Mutations of a mutable object within the function are visible to the caller because the object is not copied or cloned—it is 1047:, values and data structures are immutable, so there is no possibility for a function to modify any of its arguments. As such, there is typically no semantic difference between passing by value and passing by reference or a pointer to the data structure, and implementations frequently use call by reference internally for the efficiency benefits. Nonetheless, these languages are typically described as call by value languages. 3693: 640:, which does not evaluate any of the arguments until they are needed in the body of the function. Normal order evaluation has the property that it terminates without error whenever any other evaluation order would have terminated without error. The name "normal order" comes from the lambda calculus, where normal order reduction will find a normal form if there is one (it is a "normalizing" 1632:
one another (i.e., point to the same variable in the caller's environment). Under call by reference, writing to one argument will affect the other during the function's execution. Under call by copy-restore, writing to one argument will not affect the other during the function's execution, but at the
3284:
Call-by-future is similar to call by need in that values are computed only once. With careful handling of errors and nontermination, in particular terminating futures partway through if it is determined they will not be needed, call-by-future also has the same termination properties as call-by-need
1880:
Call by sharing (also known as "pass by sharing", "call by object", or "call by object-sharing") is an evaluation strategy that is intermediate between call by value and call by reference. Rather than every variable being exposed as a reference, only a specific class of values, termed "references",
3204:
The strategy is non-deterministic, as the evaluation can occur at any time between creation of the future (i.e., when the expression is given) and use of the future's value. The strategy is non-strict because the function body may return a value before the arguments are evaluated. However, in most
3189:
If implemented with processes or threads, creating a future will spawn one or more new processes or threads (for the promises), accessing the value will synchronize these with the main thread, and terminating the computation of the future corresponds to killing the promises computing its value. If
3185:
with the flow of the rest of the program. When a future A requires the value of another future B that has not yet been computed, future A blocks until future B finishes computing and has a value. If future B has already finished computing the value is returned immediately. Conditionals block until
3036:
Call-by-name evaluation is occasionally preferable to call-by-value evaluation. If a function's argument is not used in the function, call by name will save time by not evaluating the argument, whereas call by value will evaluate it regardless. If the argument is a non-terminating computation, the
1031:
in the implementation semantics. However, the circumlocution "call by value where the value is a reference" has become common in some languages, for example, the Java community. Compared to traditional pass by value, the value which is passed is not a value as understood by the ordinary meaning of
694:
In call by value (or pass by value), the evaluated value of the argument expression is bound to the corresponding variable in the function (frequently by copying the value into a new memory region). If the function or procedure is able to assign values to its parameters, only its local variable is
672:
With normal order evaluation, expressions containing an expensive computation, an error, or an infinite loop will be ignored if not needed, allowing the specification of user-defined control flow constructs, a facility not available with applicative order evaluation. Normal order evaluation uses
2346:
in C is only a simulation of call-by-reference using pointers. Under this "simulation" view, mutable variables in C are not first-class (that is, l-values are not expressions), rather pointer types are. In this view, the presented swap program is syntactic sugar for a program that uses pointers
1624:
community)—is a variation of call by reference. With call by copy-restore, the contents of the argument are copied to a new variable local to the call invocation. The function may then modify this variable, similarly to call by reference, but as the variable is local, the modifications are not
184:
This is a table of evaluation strategies and representative languages by year introduced. The representative languages are listed in chronological order, starting with the language(s) that introduced the strategy and followed by prominent languages that use the strategy.
2125:
is a parameter passing method where the address of the argument is passed as the formal parameter. Inside the function, the address (pointer) may be used to access or modify the value of the argument. For example, the swap operation can be implemented as follows in C:
153:, then evaluate the function's body with those references passed in. This gives the function the ability to look up the original argument values passed in through dereferencing the parameters (some languages use specific operators to perform this), to modify them via 3285:
evaluation. However, call-by-future may perform unnecessary speculative work compared to call-by-need, such as deeply evaluating a lazy data structure. This can be avoided by using lazy futures that do not start computation until it is certain the value is needed.
1066:
Due to variation in syntax, the difference between call by reference (where the reference type is implicit) and call by sharing (where the reference type is explicit) is often unclear on first glance. A simple litmus test is if it's possible to write a traditional
648:
is classified in this article as a binding technique rather than an evaluation order. But this distinction is not always followed and some authors define lazy evaluation as normal order evaluation or vice-versa, or confuse non-strictness with lazy evaluation.
1633:
end of the call, the values of the two arguments may differ, and it is unclear which argument is copied back first and therefore what value the caller's variable receives. For example, Ada specifies that the copy-out assignment for each
3012:. Unification must be classified as a strict binding strategy because it is fully performed. However, unification can also be performed on unbounded variables, so calls may not necessarily commit to final values for all its variables. 3029:) and then left to be evaluated whenever they appear in the function. If an argument is not used in the function body, the argument is never evaluated; if it is used several times, it is re-evaluated each time it appears. (See 3297:). After that time has passed, evaluation is aborted and the function is applied using call by need. This approach avoids some of call-by-need's runtime expenses while retaining desired termination characteristics. 1932:(objects). The term "call by sharing" as used in this article is not in common use; the terminology is inconsistent across different sources. For example, in the Java community, they say that Java is call by value. 2991:
Semantically, this is equivalent to the C examples. As such, many authors consider call-by-address to be a unique parameter passing strategy distinct from call-by-value, call-by-reference, and call-by-sharing.
2026:
In contrast, assignments within a function are not noticeable to the caller. For example, this code binds the formal argument to a new object, but it is not visible to the caller because it does not mutate
616:
and Java evaluate function arguments left-to-right. C leaves the order undefined. Scheme requires the execution order to be the sequential execution of an unspecified permutation of the arguments.
1939:, there is no real difference between call by sharing and call by value, except if object identity is visible in the language. The use of call by sharing with mutable objects is an alternative to 3174:
evaluation strategy combining non-strict semantics with eager evaluation. The method requires fine-grained dynamic scheduling and synchronization but is suitable for massively parallel machines.
2788:
operates on pointers and cannot change the pointers themselves, but only the values the pointers point to, this view holds that C's main evaluation strategy is more similar to call-by-sharing.
1625:
visible outside of the call invocation during the call. When the function call returns, the updated contents of this variable are copied back to overwrite the original argument ("restored").
3025:
Call by name is an evaluation strategy where the arguments to a function are not evaluated before the function is called—rather, they are substituted directly into the function body (using
3103:
is a well-known language that uses call-by-need evaluation. Because evaluation of expressions may happen arbitrarily far into a computation, Haskell supports only side effects (such as
578:. For this reason language standards such as C++ traditionally left the order unspecified, although languages such as Java and C# define the evaluation order as left-to-right and the 3983: 1027:
Strictly speaking, under call by value, no operations performed by the called routine can be visible to the caller, other than as part of the return value. This implies a form of
3293:
Optimistic evaluation is a call-by-need variant where the function's argument is partly evaluated in a call-by-value style for some amount of time (which may be adjusted at
3201:, creating a future calls a coroutine (an async function), which may yield to the caller, and in turn be yielded back to when the value is used, cooperatively multitasking. 656:, where evaluation evaluates the left expression but may skip the right expression if the result can be determined—for example, in a disjunctive expression (OR) where 593:
is a family of evaluation orders in which a function's arguments are evaluated completely before the function is applied. This has the effect of making the function
4758: 5120: 1036:
handle. Mutations to this reference handle are visible in the caller. Due to the visible mutation, this form of "call by value" is more properly referred to as
636:
is an evaluation order that is not strict, that is, a function may return a result before all of its arguments are fully evaluated. The prototypical example is
2342:. Under this view, C supports the call-by-reference parameter passing strategy. Other authors take a differing view that the presented implementation of 4812: 4785: 1265:
intent implements call-by-reference; any variable can be implicitly converted to a reference handle. In contrast the closest one can get in Java is:
4175: 1943:: the parameter is not assigned to (the argument is not overwritten and object identity is not changed), but the object (argument) is mutated. 3907: 85: 4695: 681:
used in applicative order evaluation. Normal order evaluation has historically had a lack of usable debugging tools due to its complexity.
4355: 3718: 597:, i.e. the function's result is undefined if any of the arguments are undefined, so applicative order evaluation is more commonly called 703:, passing an array by value will cause the entire array to be copied, and any mutations to this array will be invisible to the caller: 4542: 1628:
The semantics of call by copy-restore is similar in many cases to call by reference, but differs when two or more function arguments
609:. Some authors refer to strict evaluation as "call by value" due to the call-by-value binding strategy requiring strict evaluation. 4074: 3093:
variant of call by name, where, if the function argument is evaluated, that value is stored for subsequent use. If the argument is
664:
is encountered, and so forth. Conditional expressions similarly use non-strict evaluation - only one of the branches is evaluated.
3037:
advantage is enormous. However, when the function argument is used, call by name is often slower, requiring a mechanism such as a
4098: 3956: 1850:
If the program returned 1 it would be copying right-to-left, and under call by reference semantics the program would return 3.
4864: 400:
of the expression, the evaluation order defines the order in which expressions are evaluated. For example, the Python program
4874: 4822: 4795: 4768: 4621: 4395: 4365: 4158: 4131: 3826: 3586: 3549: 3466: 3432: 1641:
parameter occurs in an arbitrary order. From the following program (illegal in Ada 2012) it can be seen that the behavior of
157:
as if they were local variables, and to return values via the references. This is the call-by-reference evaluation strategy.
4928:
Proceedings of the seventh international conference on Functional programming languages and computer architecture - FPCA '95
4243: 3895:
Liskov, Barbara; Atkinson, Russ; Bloom, Toby; Moss, Eliot; Schaffert, Craig; Scheifler, Craig; Snyder, Alan (October 1979).
3038: 1059:
to the variable used as argument, rather than a copy of its value. This typically means that the function can modify (i.e.,
5128: 3097:(i.e., free of side effects), this produces the same results as call by name, saving the cost of recomputing the argument. 1872:, as unlike call-by-reference it does not require frequent communication between threads of execution for variable access. 4325: 3311: 1620:
Call by copy-restore—also known as "copy-in copy-out", "call by value result", "call by value return" (as termed in the
5022: 4665: 3649: 3294: 5090: 5066: 4092: 3677: 3620: 3391: 3369: 126:
is distinct, although some authors conflate the two terms and the definition of each term is not widely agreed upon.
78: 3362: 620:
similarly leaves the order unspecified, but in practice evaluates arguments right-to-left due to the design of its
1842:-- test_copy_restore.adb:12:10: warning: writable actual for "A" overlaps with actual for "B" 5053: 4891: 3111:. This eliminates any unexpected behavior from variables whose values change prior to their delayed evaluation. 4943: 4464: 3509: 3182: 3108: 3005: 2122: 571: 352: 106:
is a set of rules for evaluating expressions. The term is often used to refer to the more specific notion of a
601:. Furthermore, a function call is performed as soon as it is encountered in a procedure, so it is also called 3151: 3056: 3026: 1901: 1060: 1055:
Call by reference (or pass by reference) is an evaluation strategy where a parameter is bound to an implicit
1028: 700: 613: 323: 230: 160:
Evaluation strategy is part of the semantics of the programming language definition. Some languages, such as
154: 5162: 4979: 3154:. Macro substitution may therefore result in variable capture, leading to mistakes and undesired behavior. 3118:'s implementation of call by need, all arguments are passed, meaning that R allows arbitrary side effects. 1056: 1033: 331: 142: 115: 71: 17: 3205:
implementations, execution may still get stuck evaluating an unneeded argument. For example, the program
3064: 1909: 1905: 327: 319: 294: 1897: 1044: 315: 268: 4437:
Nilsson, Henrik (1999). "Tracing piece by piece: Affordable debugging for lazy functional languages".
4412: 3484:
Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '91
1921: 5112: 4998: 4447: 4284: 3413:
Araki, Shota; Nishizaki, Shin-ya (November 2014). "Call-by-name evaluation of RPC and RMI calculi".
3492: 3356: 3115: 653: 376: 302: 226: 59: 3896: 5143: 4703: 5077: 4442: 4279: 3487: 3373: 3171: 575: 4148: 4121: 3456: 3186:
their condition is evaluated, and lambdas do not create futures until they are fully applied.
3150:
Call by macro expansion is similar to call by name, but uses textual substitution rather than
4567: 4385: 4308: 3931: 3606: 3539: 3129: 3044: 1869: 3846: 3566: 3414: 1612:
type must be used to introduce a handle. Java is call-by-sharing but not call-by-reference.
4202: 3178: 3052: 1629: 1032:
value, such as an integer that can be written as a literal, but an implementation-internal
397: 165: 99: 4920: 4838: 4038: 8: 696: 393: 5085:. Lecture Notes in Computer Science. Vol. 2566. Springer-Verlag. pp. 420–435. 4743: 4608: 4488: 4439:
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
4078: 5100: 5048: 5018: 4975: 4949: 4470: 4225: 4070: 3833:
Was probably the first language to systematically exploit the power of lazy evaluation.
3767: 3602: 3515: 3331: 3326: 3159: 3068: 3030: 3009: 641: 173: 123: 49: 4588: 4293: 3482:
Crank, Erik; Felleisen, Matthias (1991). "Parameter-passing and the lambda calculus".
3170:"Call by future", also known as "parallel call by name" or "lenient evaluation", is a 110:
that defines the kind of value that is passed to the function for each parameter (the
5086: 5062: 4939: 4892:"A Game of Paradigms: A Usability Study of Functional Idioms in Gameplay Programming" 4870: 4818: 4791: 4764: 4617: 4460: 4391: 4361: 4154: 4127: 4088: 4012: 3822: 3673: 3645: 3616: 3582: 3545: 3505: 3462: 3428: 3001: 367: 356: 54: 4474: 3771: 695:
assigned—that is, anything passed into a function call is unchanged in the caller's
4953: 4931: 4725: 4452: 4289: 4229: 4217: 3814: 3757: 3574: 3519: 3497: 3420: 3306: 1940: 1936: 1925: 621: 5036: 3818: 3787: 3321: 3155: 3139: 3124:
is the most common implementation of call-by-need semantics, but variations like
3121: 3084: 1865: 652:
Boolean expressions in many languages use a form of non-strict evaluation called
645: 594: 574:, but it also affects the performance of the code because a rigid order inhibits 44: 4387:
Functional Programming in C#: Classic Programming Techniques for Modern Projects
3578: 4520: 3988: 3961: 3424: 3104: 1946:
For example, in Python, lists are mutable and passed with call by sharing, so:
1893: 5149:, implementing a graph-based machine for several common evaluation strategies. 3181:
for the function's body and each of its arguments. These futures are computed
667: 5156: 3094: 4673: 4270:
Tremblay, G. (April 2000). "Lenient evaluation is neither strict nor lazy".
5146: 4980:"Optimistic Evaluation: a fast evaluation strategy for non-strict programs" 3059:
provides agents, which represent an operation to be evaluated when needed.
5076:
Sestoft, Peter (2002). Mogensen, T; Schmidt, D; Sudborough, I. H. (eds.).
4935: 4456: 4221: 3762: 3745: 5024:
Optimistic Evaluation: A Fast Evaluation Strategy for Non-Strict Programs
4354:
Mazzola, Guerino; Milmeister, GĂ©rard; Weissmann, Jody (21 October 2004).
4066: 3198: 3090: 1917: 1853:
When the reference is passed to the caller uninitialized (for example an
501:
due to Python's left-to-right evaluation order, but a similar program in
3501: 4997:
Baker-Finch, Clem; King, David; Hall, Jon; Trinder, Phil (1999-03-10).
1924:(references, records, arrays, objects, and other compound data types), 1913: 1882: 678: 264: 161: 4638: 5058: 4084: 3641: 3612: 3191: 1861:
parameter), this evaluation strategy may be called "call by result".
4176:"EXP30-C. Do not depend on the order of evaluation for side effects" 3008:
of the terms involved combined with the application of some form of
2795:
to be declared and used with a very lightweight "reference" syntax:
4310:
Efficient evaluation of normal order through strictness information
247: 1839:-- $ gnatmake -gnatd.E test_copy_restore.adb; ./test_copy_restore 172:, support multiple evaluation strategies. Some languages define a 5012:(1). Faculty of Mathematics & Computing, The Open University. 4515: 4513: 4511: 4509: 3100: 1621: 579: 298: 205: 169: 5030:. International Conference on Functional Programming. ACM Press. 4326:"Applicative vs Normal Order Evaluation in Functional Languages" 3635: 3004:, the evaluation of an expression may simply correspond to the 281: 251: 234: 5125:
Call by Value and Call by Reference in C Programming explained
4506: 4639:"RPC: Remote Procedure Call Protocol Specification Version 2" 3060: 674: 617: 502: 372: 344: 222: 4150:
JavaScript: Functional Programming for JavaScript Developers
3984:"Passing Arguments by Value and by Reference - Visual Basic" 3746:"A Machine-Oriented Logic Based on the Resolution Principle" 3277:, and output 1, or may result in an error due to evaluating 4244:"Why are OCaml function arguments evaluated right-to-left?" 4201:
Anglade, S.; Lacrampe, J. J.; Queinnec, C. (October 1994).
3723:
CS 536: Introduction to Programming Languages and Compilers
3316: 3195: 1642: 668:
Comparison of applicative order and normal order evaluation
660:
is encountered, or in a conjunctive expression (AND) where
209: 164:, have variants with different evaluation strategies. Some 5041:
CSE 130: Programming Languages: Principles & Paradigms
4996: 4353: 4147:
Antani, Ved; Timms, Simon; Mantyla, Dan (31 August 2016).
3694:"Avoid Unnecessary Copies of Data - MATLAB & Simulink" 2355:
have been added to highlight the similarities to the Java
4869:. Springer Science & Business Media. pp. 10–11. 3906:. Massachusetts Institute of Technology. pp. 14–15. 1929: 348: 4610:
Ada 2012 rationale: the language, the standard libraries
582:
standard has added constraints on the evaluation order.
4200: 3894: 3890: 3888: 3886: 3884: 3882: 1920:(lists, records, dates, and script objects), OCaml and 5121:"Call by Value and Call by Reference in C Programming" 4921:"How much non-strictness do lenient programs require?" 4811:
Srivastava, S. K.; Srivastava, Deepali (6 June 2018).
4790:. Springer Science & Business Media. p. 232. 4360:. Springer Science & Business Media. p. 323. 3067:
programs can accomplish similar lazy evaluation using
1900:
language. It is used by many modern languages such as
4967: 4700:
CS 145 Programming Languages Lab 9: Parameter Passing
3544:. Springer Science & Business Media. p. 61. 3538:
Wilhelm, Reinhard; Seidl, Helmut (10 November 2010).
1916:(objects), Scheme (data structures such as vectors), 4999:"An Operational Semantics for Parallel Call-by-Need" 4810: 4575:
MPRI Course 2-36-1: Proof of Program (Lecture notes)
3879: 3565:
Nita, Stefania Loredana; Mihailescu, Marius (2017).
570:
The evaluation order is mainly visible in code with
4357:
Comprehensive Mathematics for Computer Scientists 2
3142:is an efficient implementation of lazy evaluation. 5016: 4146: 3788:"Computational logic: The unification computation" 2023:method modifies the object on which it is called. 1071:function in the language. For example in Fortran: 4918: 4657: 4080:Structure and interpretation of computer programs 3455:Turbak, Franklyn; Gifford, David (18 July 2008). 3158:avoid this problem by checking for and replacing 3033:for a programming technique that exploits this.) 118:of a function call, and if so in what order (the 5154: 3063:provides call by name with function parameters. 3015: 4919:Schauser, Klaus E.; Goldstein, Seth C. (1995). 4787:Guide to Assembly Language Programming in Linux 4039:"Stricter Expression Evaluation Order in C++17" 3873:Semantics and Pragmatics of the Lambda Calculus 567:due to OCaml's right-to-left evaluation order. 4726:"Tcl Library Procedures - Tcl_Obj manual page" 4702:. George Washington University. Archived from 4065: 3564: 3481: 3412: 4616:. Heidelberg: Springer. p. 15-16,87-88. 3809:Bundy, Alan; Wallen, Lincoln (1984). "SASL". 3785: 3743: 3737: 3454: 3047:can simulate call by name using delegates or 1645:is to copy in left-to-right order on return: 677:for unevaluated expressions, compared to the 79: 3663: 3661: 3537: 1904:(the shared values being called "objects"), 684: 4973: 4914: 4912: 4890:McCollin, Thomas Gwynfryn; Morell, Tobias. 4265: 4263: 4261: 4259: 4257: 3957:"Passing Parameters - C# Programming Guide" 3808: 2791:C++ confuses the issue further by allowing 699:when the function returns. For example, in 4889: 4333:CSE 505: Concepts of Programming Languages 4083:(2nd ed.). Cambridge, Massachusetts: 4007: 4005: 3811:Catalogue of Artificial Intelligence Tools 3672:(Fourth ed.). Waltham, MA: Elsevier. 3636:Daniel P. Friedman; Mitchell Wand (2008). 3145: 3125: 86: 72: 5034: 4783: 4446: 4283: 3870: 3761: 3658: 3533: 3531: 3529: 3491: 3392:Learn how and when to remove this message 129:To illustrate, executing a function call 4909: 4379: 4377: 4269: 4254: 3458:Design Concepts in Programming Languages 3355:This article includes a list of general 3288: 627: 5079:Demonstrating Lambda Calculus Reduction 5075: 4862: 4839:"Mutable Variables and Reference Types" 4784:Dandamudi, Sivarama P. (15 July 2005). 4636: 4630: 4436: 4347: 4323: 4061: 4059: 4036: 4002: 3982:Dollard, Kathleen (15 September 2021). 3981: 1615: 14: 5155: 5047: 4736: 4606: 4313:(MSc). University of Utah. p. 10. 4306: 4037:Filipek, Bartlomiej (16 August 2021). 3954: 3601: 3526: 3132:implement call by need using the type 2995: 2347:throughout, for example this program ( 1864:This strategy has gained attention in 624:. All of these are strict evaluation. 4693: 4383: 4374: 4203:"Semantics of combinations in scheme" 4153:. Packt Publishing Ltd. p. 614. 4126:. Packt Publishing Ltd. p. 106. 4120:Reese, Richard M. (14 October 2015). 4119: 3667: 3595: 3051:parameters. The latter results in an 27:Programming language evaluation rules 4866:Multi-Paradigm Programming using C++ 4568:"Call by Reference, Aliasing Issues" 4123:Learning Java Functional Programming 4075:"Normal Order and Applicative Order" 4056: 3932:"PHP: Passing by Reference - Manual" 3341: 3073:java.util.function.Supplier<T> 1889:, hence the name "call by sharing". 1050: 1037: 585: 387: 4756: 4390:. John Wiley and Sons. p. 91. 4173: 3844: 3638:Essentials of Programming Languages 3312:Comparison of programming languages 2121:, pass by address, or call/pass by 24: 4990: 4590:Ada 2022 Language Reference Manual 4540: 4417:Haskell Implementors Workshop 2012 4410: 3871:Wadsworth, Christopher P. (1971). 3416:Theory and Practice of Computation 3361:it lacks sufficient corresponding 2113: 1875: 1857:parameter in Ada as opposed to an 25: 5174: 5136: 5035:Ludäscher, Bertram (2001-01-24). 4817:. BPB Publications. p. 206. 4663: 3716: 3640:(third ed.). Cambridge, MA: 3541:Compiler Design: Virtual Machines 3165: 2338:as part of the syntax of calling 1892:The technique was first noted by 1022: 133:may first evaluate the arguments 4521:"Java is Pass-by-Value, Dammit!" 4413:"Why can't I get a stack trace?" 3346: 689: 5054:Types and Programming Languages 4897:. Aalborg University. p. 6 4883: 4856: 4831: 4804: 4777: 4763:. LeoSudo Inc. pp. 79–80. 4750: 4718: 4687: 4600: 4596:. 13 October 2023. p. 215. 4581: 4560: 4534: 4481: 4430: 4404: 4384:Sturm, Oliver (11 April 2011). 4317: 4300: 4236: 4194: 4167: 4140: 4113: 4030: 3975: 3948: 3924: 3913:from the original on 2006-09-22 3904:Laboratory for Computer Science 3864: 3838: 3802: 3779: 3710: 3670:Programming language pragmatics 3608:Types and Programming Languages 3278: 3274: 3270: 3078: 3020: 2792: 2785: 2356: 2352: 2348: 2343: 2339: 2028: 1858: 1854: 1638: 1634: 4863:Vermeir, Dirk (28 June 2011). 4746:. Microsoft. 15 November 2016. 4744:"CA1021: Avoid out parameters" 3955:Wagner, Bill (12 April 2023). 3686: 3629: 3558: 3475: 3448: 3406: 114:) and whether to evaluate the 13: 1: 4324:Borning, Alan (Autumn 1999). 4294:10.1016/S0096-0551(01)00006-6 3819:10.1007/978-3-642-96868-6_222 3337: 3152:capture-avoiding substitution 3055:being given to the function. 3027:capture-avoiding substitution 3016:Non-strict binding strategies 2360: 1029:purely functional programming 4637:Thurlow, Robert (May 2009). 4182:. Carnegie Mellon University 3571:Practical Concurrent Haskell 341:Call by reference parameters 7: 4110:See also footnote Temp 576. 3845:Fay, Colin (30 July 2018). 3668:Scott, Michael Lee (2016). 3579:10.1007/978-1-4842-2781-7_1 3300: 1045:purely functional languages 673:complex structures such as 634:non-strict evaluation order 10: 5179: 4757:Leo, Ray (November 1996). 4696:"Is Scheme call-by-value?" 4694:Jones, Rhys Price (2010). 4335:. University of Washington 4307:George, Lai (March 1987). 4180:SEI CERT C Coding Standard 3744:J.A. Robinson (Jan 1965). 3461:. MIT Press. p. 309. 3425:10.1142/9789814612883_0001 3082: 1928:(rtables and tables), and 108:parameter-passing strategy 4210:ACM SIGPLAN Lisp Pointers 3875:(PhD). Oxford University. 3725:. University of Wisconsin 3162:that are not parameters. 2784:Because in this program, 685:Strict binding strategies 5142:The interactive on-line 3207: 2797: 2365: 2359:call-by-sharing program 2128: 2033: 1948: 1647: 1267: 1073: 705: 654:short-circuit evaluation 507: 402: 194:Representative languages 179: 60:Short-circuit evaluation 5144:Geometry of Interaction 5037:"CSE 130 lecture notes" 4489:"Open array parameters" 3847:"About lazy evaluation" 3376:more precise citations. 3177:The strategy creates a 3146:Call by macro expansion 1941:input/output parameters 638:normal order evaluation 141:, store the results in 4760:Little C++ (Made Easy) 3897:"CLU Reference Manual" 3786:J.A. Robinson (1971). 3776:; Here: sect.5.8, p.32 1870:remote procedure calls 628:Non-strict evaluation 576:instruction scheduling 197:Year first introduced 4936:10.1145/224164.224208 4607:Barnes, John (2013). 4457:10.1145/317636.317782 4222:10.1145/382109.382669 3763:10.1145/321250.321253 3289:Optimistic evaluation 3126:optimistic evaluation 1261:Therefore, Fortran's 366:Call by reference to 166:declarative languages 36:Evaluation strategies 4930:. pp. 216–225. 3792:Machine Intelligence 3053:abstract syntax tree 1616:Call by copy-restore 398:abstract syntax tree 261:Call by copy-restore 145:or memory locations 100:programming language 5163:Evaluation strategy 5049:Pierce, Benjamin C. 5019:Peyton Jones, Simon 4976:Jones, Simon Peyton 4543:"PARAMETER PASSING" 4250:. 30 November 2017. 4174:Seacord, Robert C. 4071:Sussman, Gerald Jay 4017:en.cppreference.com 3719:"Parameter Passing" 3603:Pierce, Benjamin C. 3502:10.1145/99583.99616 3190:implemented with a 3049:Expression<T> 2996:Call by unification 2334:Some authors treat 586:Strict evaluation 394:order of operations 278:Call by unification 191:Evaluation strategy 104:evaluation strategy 4706:on 16 October 2014 4493:www.freepascal.org 4441:. pp. 36–47. 4272:Computer Languages 3750:Journal of the ACM 3332:Partial evaluation 3327:Call-by-push-value 3160:shadowed variables 3089:Call by need is a 3069:lambda expressions 1608:where an explicit 642:reduction strategy 174:calling convention 124:reduction strategy 50:Partial evaluation 4876:978-1-4471-0311-0 4824:978-93-87284-94-4 4797:978-0-387-25897-3 4770:978-0-9654634-1-6 4623:978-3-642-45210-9 4547:cgi.csc.liv.ac.uk 4397:978-0-470-74458-1 4367:978-3-540-20861-7 4160:978-1-78712-557-5 4133:978-1-78528-935-4 3828:978-3-540-13938-6 3698:www.mathworks.com 3588:978-1-4842-2780-0 3551:978-3-642-14909-2 3468:978-0-262-30315-6 3434:978-981-4612-87-6 3402: 3401: 3394: 3107:) via the use of 3002:logic programming 2737:"%d %d" 2299:"%d %d" 1937:immutable objects 1833:Test_Copy_Restore 1671:Test_Copy_Restore 1567:"%d %d" 1051:Call by reference 607:greedy evaluation 599:strict evaluation 591:Applicative order 388:Evaluation orders 385: 384: 357:Visual Basic .NET 202:Call by reference 122:). The notion of 96: 95: 55:Remote evaluation 16:(Redirected from 5170: 5132: 5127:. Archived from 5116: 5110: 5106: 5104: 5096: 5084: 5072: 5044: 5031: 5029: 5017:Ennals, Robert; 5013: 5003: 4984: 4983: 4974:Ennals, Robert; 4971: 4965: 4964: 4962: 4960: 4925: 4916: 4907: 4906: 4904: 4902: 4896: 4887: 4881: 4880: 4860: 4854: 4853: 4851: 4849: 4835: 4829: 4828: 4808: 4802: 4801: 4781: 4775: 4774: 4754: 4748: 4747: 4740: 4734: 4733: 4722: 4716: 4715: 4713: 4711: 4691: 4685: 4684: 4682: 4681: 4672:. Archived from 4666:"Call by Object" 4664:Lundh, Fredrik. 4661: 4655: 4654: 4652: 4650: 4634: 4628: 4627: 4615: 4604: 4598: 4597: 4595: 4585: 4579: 4578: 4572: 4564: 4558: 4557: 4555: 4553: 4538: 4532: 4531: 4529: 4528: 4517: 4504: 4503: 4501: 4499: 4485: 4479: 4478: 4450: 4434: 4428: 4427: 4425: 4423: 4408: 4402: 4401: 4381: 4372: 4371: 4351: 4345: 4344: 4342: 4340: 4330: 4321: 4315: 4314: 4304: 4298: 4297: 4287: 4267: 4252: 4251: 4240: 4234: 4233: 4207: 4198: 4192: 4191: 4189: 4187: 4171: 4165: 4164: 4144: 4138: 4137: 4117: 4111: 4109: 4107: 4106: 4097:. Archived from 4063: 4054: 4053: 4051: 4049: 4034: 4028: 4027: 4025: 4023: 4013:"History of C++" 4009: 4000: 3999: 3997: 3996: 3979: 3973: 3972: 3970: 3969: 3952: 3946: 3945: 3943: 3942: 3928: 3922: 3921: 3919: 3918: 3912: 3901: 3892: 3877: 3876: 3868: 3862: 3861: 3859: 3857: 3842: 3836: 3835: 3806: 3800: 3799: 3783: 3777: 3775: 3765: 3741: 3735: 3734: 3732: 3730: 3717:Hasti, Rebecca. 3714: 3708: 3707: 3705: 3704: 3690: 3684: 3683: 3665: 3656: 3655: 3633: 3627: 3626: 3599: 3593: 3592: 3562: 3556: 3555: 3535: 3524: 3523: 3495: 3479: 3473: 3472: 3452: 3446: 3445: 3443: 3441: 3410: 3397: 3390: 3386: 3383: 3377: 3372:this article by 3363:inline citations 3350: 3349: 3342: 3307:Beta normal form 3280: 3276: 3272: 3269:may either have 3265: 3262: 3259: 3256: 3253: 3250: 3247: 3244: 3241: 3238: 3235: 3232: 3229: 3226: 3223: 3220: 3217: 3214: 3211: 3179:future (promise) 3135: 3074: 3050: 2987: 2984: 2981: 2978: 2975: 2972: 2969: 2966: 2963: 2960: 2957: 2954: 2951: 2948: 2945: 2942: 2939: 2936: 2933: 2930: 2927: 2924: 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: 2794: 2787: 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: 2678: 2675: 2672: 2669: 2666: 2663: 2660: 2657: 2654: 2651: 2648: 2645: 2642: 2639: 2636: 2633: 2630: 2627: 2624: 2621: 2618: 2615: 2612: 2609: 2606: 2603: 2600: 2597: 2594: 2591: 2588: 2585: 2582: 2579: 2576: 2573: 2570: 2567: 2564: 2561: 2558: 2555: 2552: 2549: 2546: 2543: 2540: 2537: 2534: 2531: 2528: 2525: 2522: 2519: 2516: 2513: 2510: 2507: 2504: 2501: 2498: 2495: 2492: 2489: 2486: 2483: 2480: 2477: 2474: 2471: 2468: 2465: 2462: 2459: 2456: 2453: 2450: 2447: 2444: 2441: 2438: 2435: 2432: 2429: 2426: 2423: 2420: 2417: 2414: 2411: 2408: 2405: 2402: 2399: 2396: 2393: 2390: 2387: 2384: 2381: 2378: 2375: 2372: 2369: 2358: 2354: 2350: 2345: 2341: 2337: 2330: 2327: 2324: 2321: 2318: 2315: 2312: 2309: 2306: 2303: 2300: 2297: 2294: 2291: 2288: 2285: 2282: 2279: 2276: 2273: 2270: 2267: 2264: 2261: 2258: 2255: 2252: 2249: 2246: 2243: 2240: 2237: 2234: 2231: 2228: 2225: 2222: 2219: 2216: 2213: 2210: 2207: 2204: 2201: 2198: 2195: 2192: 2189: 2186: 2183: 2180: 2177: 2174: 2171: 2168: 2165: 2162: 2159: 2156: 2153: 2150: 2147: 2144: 2141: 2138: 2135: 2132: 2109: 2106: 2103: 2100: 2097: 2094: 2091: 2088: 2085: 2082: 2079: 2076: 2073: 2070: 2067: 2064: 2061: 2058: 2055: 2052: 2049: 2046: 2043: 2040: 2037: 2030: 2022: 2018: 2012: 2009: 2006: 2003: 2000: 1997: 1994: 1991: 1988: 1985: 1982: 1979: 1976: 1973: 1970: 1967: 1964: 1961: 1958: 1955: 1952: 1896:in 1974 for the 1860: 1856: 1846: 1843: 1840: 1837: 1834: 1831: 1828: 1825: 1822: 1819: 1816: 1813: 1810: 1807: 1806:"X = " 1804: 1801: 1798: 1795: 1792: 1789: 1786: 1783: 1780: 1777: 1774: 1771: 1768: 1765: 1762: 1759: 1756: 1753: 1750: 1747: 1744: 1741: 1738: 1735: 1732: 1729: 1726: 1723: 1720: 1717: 1714: 1711: 1708: 1705: 1702: 1699: 1696: 1693: 1690: 1687: 1684: 1681: 1678: 1675: 1672: 1669: 1666: 1663: 1660: 1657: 1654: 1651: 1640: 1636: 1611: 1604: 1601: 1598: 1595: 1592: 1589: 1586: 1583: 1580: 1577: 1574: 1571: 1568: 1565: 1562: 1559: 1556: 1553: 1550: 1547: 1544: 1541: 1538: 1535: 1532: 1529: 1526: 1523: 1520: 1517: 1514: 1511: 1508: 1505: 1502: 1499: 1496: 1493: 1490: 1487: 1484: 1481: 1478: 1475: 1472: 1469: 1466: 1463: 1460: 1457: 1454: 1451: 1448: 1445: 1442: 1439: 1436: 1433: 1430: 1427: 1424: 1421: 1418: 1415: 1412: 1409: 1406: 1403: 1400: 1397: 1394: 1391: 1388: 1385: 1382: 1379: 1376: 1373: 1370: 1367: 1364: 1361: 1358: 1355: 1352: 1349: 1346: 1343: 1340: 1337: 1334: 1331: 1328: 1325: 1322: 1319: 1316: 1313: 1310: 1307: 1304: 1301: 1298: 1295: 1292: 1289: 1286: 1283: 1280: 1277: 1274: 1271: 1264: 1257: 1254: 1251: 1248: 1245: 1242: 1239: 1236: 1233: 1230: 1227: 1224: 1221: 1218: 1215: 1212: 1209: 1206: 1203: 1200: 1197: 1194: 1191: 1188: 1185: 1182: 1179: 1176: 1173: 1170: 1167: 1164: 1161: 1158: 1155: 1152: 1149: 1146: 1143: 1140: 1137: 1134: 1131: 1128: 1125: 1122: 1119: 1116: 1113: 1110: 1107: 1104: 1101: 1098: 1095: 1092: 1089: 1086: 1083: 1080: 1077: 1070: 1018: 1015: 1012: 1009: 1006: 1003: 1000: 997: 994: 991: 988: 985: 982: 979: 976: 973: 970: 967: 964: 961: 958: 955: 952: 949: 946: 943: 940: 937: 934: 931: 928: 925: 922: 919: 916: 913: 910: 907: 904: 901: 898: 895: 892: 889: 886: 883: 880: 877: 874: 871: 868: 865: 862: 859: 856: 853: 850: 847: 844: 841: 838: 835: 832: 829: 826: 823: 820: 817: 814: 811: 808: 805: 802: 799: 796: 793: 790: 787: 784: 781: 778: 775: 772: 769: 766: 763: 760: 757: 754: 751: 748: 745: 742: 739: 736: 733: 730: 727: 724: 721: 718: 715: 712: 709: 663: 659: 622:abstract machine 603:eager evaluation 566: 559: 556: 553: 550: 547: 544: 541: 538: 535: 532: 529: 526: 523: 520: 517: 514: 511: 500: 493: 490: 487: 484: 481: 478: 475: 472: 469: 466: 463: 460: 457: 454: 451: 448: 445: 442: 439: 436: 433: 430: 427: 424: 421: 418: 415: 412: 409: 406: 188: 187: 152: 148: 140: 136: 132: 120:evaluation order 112:binding strategy 88: 81: 74: 32: 31: 21: 5178: 5177: 5173: 5172: 5171: 5169: 5168: 5167: 5153: 5152: 5139: 5119: 5108: 5107: 5098: 5097: 5093: 5082: 5069: 5027: 5006:Research Report 5001: 4993: 4991:Further reading 4988: 4987: 4978:(August 2003). 4972: 4968: 4958: 4956: 4946: 4923: 4917: 4910: 4900: 4898: 4894: 4888: 4884: 4877: 4861: 4857: 4847: 4845: 4837: 4836: 4832: 4825: 4809: 4805: 4798: 4782: 4778: 4771: 4755: 4751: 4742: 4741: 4737: 4724: 4723: 4719: 4709: 4707: 4692: 4688: 4679: 4677: 4662: 4658: 4648: 4646: 4635: 4631: 4624: 4613: 4605: 4601: 4593: 4587: 4586: 4582: 4570: 4566: 4565: 4561: 4551: 4549: 4541:Coenen, Frans. 4539: 4535: 4526: 4524: 4519: 4518: 4507: 4497: 4495: 4487: 4486: 4482: 4467: 4448:10.1.1.451.6513 4435: 4431: 4421: 4419: 4411:Marlow, Simon. 4409: 4405: 4398: 4382: 4375: 4368: 4352: 4348: 4338: 4336: 4328: 4322: 4318: 4305: 4301: 4285:10.1.1.137.9885 4268: 4255: 4242: 4241: 4237: 4205: 4199: 4195: 4185: 4183: 4172: 4168: 4161: 4145: 4141: 4134: 4118: 4114: 4104: 4102: 4095: 4067:Abelson, Harold 4064: 4057: 4047: 4045: 4035: 4031: 4021: 4019: 4011: 4010: 4003: 3994: 3992: 3980: 3976: 3967: 3965: 3953: 3949: 3940: 3938: 3930: 3929: 3925: 3916: 3914: 3910: 3899: 3893: 3880: 3869: 3865: 3855: 3853: 3843: 3839: 3829: 3813:. p. 117. 3807: 3803: 3784: 3780: 3742: 3738: 3728: 3726: 3715: 3711: 3702: 3700: 3692: 3691: 3687: 3680: 3666: 3659: 3652: 3634: 3630: 3623: 3600: 3596: 3589: 3563: 3559: 3552: 3536: 3527: 3512: 3480: 3476: 3469: 3453: 3449: 3439: 3437: 3435: 3411: 3407: 3398: 3387: 3381: 3378: 3368:Please help to 3367: 3351: 3347: 3340: 3322:Lambda calculus 3303: 3291: 3267: 3266: 3263: 3260: 3257: 3254: 3251: 3248: 3245: 3242: 3239: 3236: 3233: 3230: 3227: 3224: 3221: 3218: 3215: 3212: 3209: 3168: 3156:Hygienic macros 3148: 3140:Graph reduction 3133: 3122:Lazy evaluation 3087: 3085:Lazy evaluation 3081: 3072: 3048: 3031:Jensen's device 3023: 3018: 2998: 2989: 2988: 2985: 2982: 2979: 2976: 2973: 2970: 2967: 2964: 2961: 2958: 2955: 2952: 2949: 2946: 2943: 2940: 2937: 2934: 2931: 2928: 2925: 2922: 2919: 2916: 2913: 2910: 2907: 2904: 2901: 2898: 2895: 2892: 2889: 2886: 2883: 2880: 2877: 2874: 2871: 2868: 2865: 2862: 2859: 2856: 2853: 2850: 2847: 2844: 2841: 2838: 2835: 2832: 2829: 2826: 2823: 2820: 2817: 2814: 2811: 2808: 2805: 2802: 2799: 2782: 2781: 2778: 2775: 2772: 2769: 2766: 2763: 2760: 2757: 2754: 2751: 2748: 2745: 2742: 2739: 2736: 2733: 2730: 2727: 2724: 2721: 2718: 2715: 2712: 2709: 2706: 2703: 2700: 2697: 2694: 2691: 2688: 2685: 2682: 2679: 2676: 2673: 2670: 2667: 2664: 2661: 2658: 2655: 2652: 2649: 2646: 2643: 2640: 2637: 2634: 2631: 2628: 2625: 2622: 2619: 2616: 2613: 2610: 2607: 2604: 2601: 2598: 2595: 2592: 2589: 2586: 2583: 2580: 2577: 2574: 2571: 2568: 2565: 2562: 2559: 2556: 2553: 2550: 2547: 2544: 2541: 2538: 2535: 2532: 2529: 2526: 2523: 2520: 2517: 2514: 2511: 2508: 2505: 2502: 2499: 2496: 2493: 2490: 2487: 2484: 2481: 2478: 2475: 2472: 2469: 2466: 2463: 2460: 2457: 2454: 2451: 2448: 2445: 2442: 2439: 2436: 2433: 2430: 2427: 2424: 2421: 2418: 2415: 2412: 2409: 2406: 2403: 2400: 2397: 2394: 2391: 2388: 2385: 2382: 2379: 2376: 2373: 2371:<stdio.h> 2370: 2367: 2335: 2332: 2331: 2328: 2325: 2322: 2319: 2316: 2313: 2310: 2307: 2304: 2301: 2298: 2295: 2292: 2289: 2286: 2283: 2280: 2277: 2274: 2271: 2268: 2265: 2262: 2259: 2256: 2253: 2250: 2247: 2244: 2241: 2238: 2235: 2232: 2229: 2226: 2223: 2220: 2217: 2214: 2211: 2208: 2205: 2202: 2199: 2196: 2193: 2190: 2187: 2184: 2181: 2178: 2175: 2172: 2169: 2166: 2163: 2160: 2157: 2154: 2151: 2148: 2145: 2142: 2139: 2136: 2134:<stdio.h> 2133: 2130: 2119:Call by address 2116: 2114:Call by address 2111: 2110: 2107: 2104: 2101: 2098: 2095: 2092: 2089: 2086: 2083: 2080: 2077: 2074: 2071: 2068: 2065: 2062: 2059: 2056: 2053: 2050: 2047: 2044: 2041: 2038: 2035: 2020: 2017: 2014: 2013: 2010: 2007: 2004: 2001: 1998: 1995: 1992: 1989: 1986: 1983: 1980: 1977: 1974: 1971: 1968: 1965: 1962: 1959: 1956: 1953: 1950: 1878: 1876:Call by sharing 1866:multiprocessing 1848: 1847: 1844: 1841: 1838: 1835: 1832: 1829: 1826: 1823: 1820: 1817: 1814: 1811: 1808: 1805: 1802: 1799: 1796: 1793: 1790: 1787: 1784: 1781: 1778: 1775: 1772: 1769: 1766: 1763: 1760: 1757: 1754: 1751: 1748: 1745: 1742: 1739: 1736: 1733: 1730: 1727: 1724: 1721: 1718: 1715: 1712: 1709: 1706: 1703: 1700: 1697: 1694: 1691: 1688: 1685: 1682: 1679: 1676: 1673: 1670: 1667: 1664: 1661: 1658: 1655: 1652: 1649: 1618: 1609: 1606: 1605: 1602: 1599: 1596: 1593: 1590: 1587: 1584: 1581: 1578: 1575: 1572: 1569: 1566: 1563: 1560: 1557: 1554: 1551: 1548: 1545: 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: 1413: 1410: 1407: 1404: 1401: 1398: 1395: 1392: 1389: 1386: 1383: 1380: 1377: 1374: 1371: 1368: 1365: 1362: 1359: 1356: 1353: 1350: 1347: 1344: 1341: 1338: 1335: 1332: 1329: 1326: 1323: 1320: 1317: 1314: 1311: 1308: 1305: 1302: 1299: 1296: 1293: 1290: 1287: 1284: 1281: 1278: 1275: 1272: 1269: 1262: 1259: 1258: 1255: 1252: 1249: 1247:end subroutine 1246: 1243: 1240: 1237: 1234: 1231: 1228: 1225: 1222: 1219: 1216: 1213: 1210: 1207: 1204: 1201: 1198: 1195: 1192: 1189: 1186: 1183: 1180: 1177: 1174: 1171: 1168: 1165: 1162: 1159: 1156: 1153: 1150: 1147: 1144: 1141: 1138: 1135: 1132: 1129: 1126: 1123: 1120: 1117: 1114: 1111: 1108: 1105: 1102: 1099: 1096: 1093: 1090: 1087: 1084: 1081: 1078: 1075: 1068: 1053: 1038:call by sharing 1025: 1020: 1019: 1016: 1013: 1010: 1007: 1004: 1001: 998: 995: 992: 989: 986: 983: 980: 977: 974: 971: 968: 965: 962: 959: 956: 953: 950: 947: 944: 941: 938: 935: 932: 929: 926: 923: 920: 917: 914: 911: 908: 905: 902: 899: 896: 893: 890: 887: 884: 881: 878: 875: 872: 869: 866: 863: 860: 857: 854: 851: 848: 845: 842: 839: 836: 833: 830: 827: 824: 821: 818: 815: 812: 809: 806: 803: 800: 797: 794: 791: 788: 785: 782: 779: 776: 773: 770: 767: 764: 761: 758: 755: 752: 749: 746: 743: 740: 737: 734: 731: 728: 725: 722: 719: 716: 713: 710: 707: 692: 687: 670: 661: 657: 646:Lazy evaluation 630: 588: 564: 561: 560: 557: 554: 551: 548: 545: 542: 539: 536: 533: 530: 527: 524: 521: 518: 515: 512: 509: 498: 495: 494: 491: 488: 485: 482: 479: 476: 473: 470: 467: 464: 461: 458: 455: 452: 449: 446: 443: 440: 437: 434: 431: 428: 425: 422: 419: 416: 413: 410: 407: 404: 390: 312:Call by sharing 182: 150: 146: 138: 134: 130: 92: 45:Lazy evaluation 28: 23: 22: 15: 12: 11: 5: 5176: 5166: 5165: 5151: 5150: 5138: 5137:External links 5135: 5134: 5133: 5131:on 2013-01-21. 5117: 5091: 5073: 5067: 5045: 5032: 5014: 4992: 4989: 4986: 4985: 4966: 4944: 4908: 4882: 4875: 4855: 4830: 4823: 4803: 4796: 4776: 4769: 4749: 4735: 4717: 4686: 4656: 4643:tools.ietf.org 4629: 4622: 4599: 4580: 4559: 4533: 4505: 4480: 4465: 4429: 4403: 4396: 4373: 4366: 4346: 4316: 4299: 4253: 4235: 4193: 4166: 4159: 4139: 4132: 4112: 4093: 4055: 4029: 4001: 3989:Microsoft Docs 3974: 3962:Microsoft Docs 3947: 3923: 3878: 3863: 3837: 3827: 3801: 3778: 3736: 3709: 3685: 3678: 3657: 3651:978-0262062794 3650: 3628: 3621: 3615:. p. 56. 3594: 3587: 3567:"Introduction" 3557: 3550: 3525: 3510: 3493:10.1.1.23.4385 3474: 3467: 3447: 3433: 3404: 3403: 3400: 3399: 3354: 3352: 3345: 3339: 3336: 3335: 3334: 3329: 3324: 3319: 3314: 3309: 3302: 3299: 3290: 3287: 3273:finish before 3208: 3167: 3166:Call by future 3164: 3147: 3144: 3130:.NET languages 3083:Main article: 3080: 3077: 3045:.NET languages 3022: 3019: 3017: 3014: 2997: 2994: 2798: 2366: 2129: 2115: 2112: 2034: 1949: 1894:Barbara Liskov 1877: 1874: 1648: 1617: 1614: 1603:// output: 2 1 1268: 1074: 1052: 1049: 1024: 1023:Semantic drift 1021: 706: 691: 688: 686: 683: 669: 666: 629: 626: 587: 584: 508: 403: 389: 386: 383: 382: 379: 370: 363: 362: 359: 342: 338: 337: 334: 313: 309: 308: 305: 292: 288: 287: 284: 279: 275: 274: 271: 262: 258: 257: 254: 245: 241: 240: 237: 220: 216: 215: 212: 203: 199: 198: 195: 192: 181: 178: 94: 93: 91: 90: 83: 76: 68: 65: 64: 63: 62: 57: 52: 47: 39: 38: 26: 9: 6: 4: 3: 2: 5175: 5164: 5161: 5160: 5158: 5148: 5145: 5141: 5140: 5130: 5126: 5122: 5118: 5114: 5102: 5094: 5092:3-540-00326-6 5088: 5081: 5080: 5074: 5070: 5068:0-262-16209-1 5064: 5060: 5056: 5055: 5050: 5046: 5042: 5038: 5033: 5026: 5025: 5020: 5015: 5011: 5007: 5000: 4995: 4994: 4981: 4977: 4970: 4955: 4951: 4947: 4941: 4937: 4933: 4929: 4922: 4915: 4913: 4893: 4886: 4878: 4872: 4868: 4867: 4859: 4844: 4840: 4834: 4826: 4820: 4816: 4815: 4807: 4799: 4793: 4789: 4788: 4780: 4772: 4766: 4762: 4761: 4753: 4745: 4739: 4731: 4727: 4721: 4705: 4701: 4697: 4690: 4676:on 2011-05-19 4675: 4671: 4667: 4660: 4644: 4640: 4633: 4625: 4619: 4612: 4611: 4603: 4592: 4591: 4584: 4577:. p. 53. 4576: 4569: 4563: 4548: 4544: 4537: 4523:. 16 May 2001 4522: 4516: 4514: 4512: 4510: 4494: 4490: 4484: 4476: 4472: 4468: 4462: 4458: 4454: 4449: 4444: 4440: 4433: 4418: 4414: 4407: 4399: 4393: 4389: 4388: 4380: 4378: 4369: 4363: 4359: 4358: 4350: 4334: 4327: 4320: 4312: 4311: 4303: 4295: 4291: 4286: 4281: 4277: 4273: 4266: 4264: 4262: 4260: 4258: 4249: 4245: 4239: 4231: 4227: 4223: 4219: 4215: 4211: 4204: 4197: 4181: 4177: 4170: 4162: 4156: 4152: 4151: 4143: 4135: 4129: 4125: 4124: 4116: 4101:on 2005-03-02 4100: 4096: 4094:0-262-01153-0 4090: 4086: 4082: 4081: 4076: 4072: 4068: 4062: 4060: 4044: 4040: 4033: 4018: 4014: 4008: 4006: 3991: 3990: 3985: 3978: 3964: 3963: 3958: 3951: 3937: 3933: 3927: 3909: 3905: 3898: 3891: 3889: 3887: 3885: 3883: 3874: 3867: 3852: 3848: 3841: 3834: 3830: 3824: 3820: 3816: 3812: 3805: 3797: 3793: 3789: 3782: 3773: 3769: 3764: 3759: 3755: 3751: 3747: 3740: 3724: 3720: 3713: 3699: 3695: 3689: 3681: 3679:9780124104778 3675: 3671: 3664: 3662: 3653: 3647: 3643: 3642:The MIT Press 3639: 3632: 3624: 3622:0-262-16209-1 3618: 3614: 3610: 3609: 3604: 3598: 3590: 3584: 3580: 3576: 3573:. p. 3. 3572: 3568: 3561: 3553: 3547: 3543: 3542: 3534: 3532: 3530: 3521: 3517: 3513: 3507: 3503: 3499: 3494: 3489: 3486:. p. 2. 3485: 3478: 3470: 3464: 3460: 3459: 3451: 3436: 3430: 3426: 3422: 3419:. p. 1. 3418: 3417: 3409: 3405: 3396: 3393: 3385: 3375: 3371: 3365: 3364: 3358: 3353: 3344: 3343: 3333: 3330: 3328: 3325: 3323: 3320: 3318: 3315: 3313: 3310: 3308: 3305: 3304: 3298: 3296: 3286: 3282: 3206: 3202: 3200: 3197: 3193: 3187: 3184: 3180: 3175: 3173: 3163: 3161: 3157: 3153: 3143: 3141: 3137: 3134:Lazy<T> 3131: 3127: 3123: 3119: 3117: 3112: 3110: 3106: 3102: 3098: 3096: 3092: 3086: 3076: 3070: 3066: 3062: 3058: 3054: 3046: 3042: 3040: 3034: 3032: 3028: 3013: 3011: 3007: 3003: 2993: 2796: 2789: 2364: 2362: 2127: 2124: 2120: 2032: 2024: 1947: 1944: 1942: 1938: 1933: 1931: 1927: 1923: 1919: 1915: 1911: 1907: 1903: 1899: 1895: 1890: 1888: 1884: 1873: 1871: 1867: 1862: 1851: 1646: 1644: 1631: 1626: 1623: 1613: 1266: 1082:implicit none 1072: 1064: 1062: 1058: 1048: 1046: 1041: 1039: 1035: 1030: 704: 702: 698: 690:Call by value 682: 680: 676: 665: 655: 650: 647: 643: 639: 635: 625: 623: 619: 615: 612:Common Lisp, 610: 608: 604: 600: 596: 592: 583: 581: 577: 573: 568: 506: 504: 401: 399: 395: 380: 378: 374: 371: 369: 365: 364: 360: 358: 354: 350: 346: 343: 340: 339: 335: 333: 329: 325: 321: 317: 314: 311: 310: 306: 304: 300: 296: 293: 290: 289: 285: 283: 280: 277: 276: 272: 270: 266: 263: 260: 259: 255: 253: 249: 246: 243: 242: 238: 236: 232: 228: 224: 221: 219:Call by value 218: 217: 213: 211: 207: 204: 201: 200: 196: 193: 190: 189: 186: 177: 175: 171: 167: 163: 158: 156: 144: 127: 125: 121: 117: 113: 109: 105: 101: 89: 84: 82: 77: 75: 70: 69: 67: 66: 61: 58: 56: 53: 51: 48: 46: 43: 42: 41: 40: 37: 34: 33: 30: 19: 5129:the original 5124: 5078: 5052: 5040: 5023: 5009: 5005: 4969: 4957:. Retrieved 4927: 4899:. Retrieved 4885: 4865: 4858: 4846:. Retrieved 4842: 4833: 4813: 4806: 4786: 4779: 4759: 4752: 4738: 4729: 4720: 4708:. Retrieved 4704:the original 4699: 4689: 4678:. Retrieved 4674:the original 4669: 4659: 4647:. Retrieved 4642: 4632: 4609: 4602: 4589: 4583: 4574: 4562: 4550:. Retrieved 4546: 4536: 4525:. Retrieved 4496:. Retrieved 4492: 4483: 4438: 4432: 4420:. Retrieved 4416: 4406: 4386: 4356: 4349: 4337:. Retrieved 4332: 4319: 4309: 4302: 4278:(1): 43–66. 4275: 4271: 4247: 4238: 4216:(4): 15–20. 4213: 4209: 4196: 4184:. Retrieved 4179: 4169: 4149: 4142: 4122: 4115: 4103:. Retrieved 4099:the original 4079: 4046:. Retrieved 4042: 4032: 4020:. Retrieved 4016: 3993:. Retrieved 3987: 3977: 3966:. Retrieved 3960: 3950: 3939:. Retrieved 3935: 3926: 3915:. Retrieved 3903: 3872: 3866: 3854:. Retrieved 3850: 3840: 3832: 3810: 3804: 3795: 3791: 3781: 3756:(1): 23–41. 3753: 3749: 3739: 3727:. Retrieved 3722: 3712: 3701:. Retrieved 3697: 3688: 3669: 3637: 3631: 3607: 3597: 3570: 3560: 3540: 3483: 3477: 3457: 3450: 3438:. Retrieved 3415: 3408: 3388: 3379: 3360: 3292: 3283: 3268: 3203: 3188: 3183:concurrently 3176: 3169: 3149: 3138: 3120: 3113: 3099: 3088: 3079:Call by need 3043: 3035: 3024: 3021:Call by name 2999: 2990: 2790: 2783: 2524:temp_storage 2503:temp_storage 2333: 2118: 2117: 2025: 2019:because the 2015: 1945: 1934: 1891: 1886: 1879: 1863: 1852: 1849: 1627: 1619: 1607: 1260: 1253:end program 1065: 1054: 1042: 1026: 693: 671: 651: 637: 633: 631: 611: 606: 602: 598: 590: 589: 572:side effects 569: 562: 496: 396:defines the 391: 291:Call by need 244:Call by name 183: 159: 128: 119: 111: 107: 103: 97: 35: 29: 18:Call by name 5109:|work= 4043:C++ Stories 3936:www.php.net 3374:introducing 3199:async/await 3075:interface. 3006:unification 1918:AppleScript 1912:(objects), 1908:(objects), 1883:boxed types 1662:Ada.Text_IO 1653:Ada.Text_IO 1160:subroutine 5147:visualiser 4945:0897917197 4901:11 January 4848:20 January 4814:C in Depth 4730:www.tcl.tk 4710:20 January 4680:2011-05-19 4670:Effbot.org 4552:22 January 4527:2016-12-24 4498:20 January 4466:1581131119 4105:2006-03-06 3995:2023-09-10 3968:2023-09-10 3941:2021-07-04 3917:2011-05-19 3851:R-bloggers 3703:2023-01-28 3511:0897914198 3382:April 2012 3357:references 3338:References 3172:concurrent 3010:resolution 1914:JavaScript 1069:swap(a, b) 996:PrintArray 963:PrintArray 906:PrintArray 876:PrintArray 729:PrintArray 679:call stack 489:'' 438:'' 392:While the 265:Fortran IV 168:, such as 162:PureScript 155:assignment 143:references 116:parameters 5111:ignored ( 5101:cite book 5059:MIT Press 4959:7 January 4843:okmij.org 4443:CiteSeerX 4422:25 August 4339:23 August 4280:CiteSeerX 4186:23 August 4085:MIT Press 4048:24 August 3856:21 August 3729:22 August 3613:MIT Press 3488:CiteSeerX 3440:21 August 3192:coroutine 2671:b_storage 2650:b_storage 2641:a_storage 2620:a_storage 1677:procedure 1668:procedure 1061:assign to 1057:reference 1034:reference 843:Procedure 726:procedure 537:print_int 522:print_int 5157:Category 5051:(2002). 5021:(2003). 4475:13954359 4073:(1996). 3908:Archived 3798:: 63–72. 3772:14389185 3605:(2002). 3301:See also 3194:, as in 3105:mutation 3091:memoized 3071:and the 2959:<< 2953:<< 2947:<< 2368:#include 2131:#include 2016:outputs 1845:-- X = 2 1800:Put_Line 1157:contains 1076:program 563:outputs 497:outputs 248:ALGOL 60 4954:2045943 4649:7 April 4230:2987427 4022:11 June 3520:5782416 3370:improve 3295:runtime 3128:exist. 3101:Haskell 2123:pointer 1812:Integer 1767:Integer 1704:Integer 1622:Fortran 1549:println 1211:integer 1181:integer 1100:integer 1085:integer 945:integer 864:integer 828:WriteLn 765:Integer 747:integer 708:program 299:Haskell 206:Fortran 170:Datalog 5089:  5065:  4952:  4942:  4873:  4821:  4794:  4767:  4645:. IETF 4620:  4473:  4463:  4445:  4394:  4364:  4282:  4228:  4157:  4130:  4091:  3825:  3770:  3676:  3648:  3619:  3585:  3548:  3518:  3508:  3490:  3465:  3431:  3359:, but 3109:monads 3057:Eiffel 2977:return 2974:// 2 1 2770:return 2767:// 2 1 2731:printf 2695:assign 2677:assign 2578:assign 2554:assign 2530:assign 2416:assign 2398:return 2353:assign 2320:return 2317:// 2 1 2293:printf 2069:a_list 2057:a_list 2051:a_list 2045:a_list 2029:a_list 2021:append 1972:append 1966:a_list 1960:a_list 1902:Python 1887:shared 1859:in out 1782:Modify 1755:Modify 1680:Modify 1635:in out 1561:format 1555:String 1537:System 1459:String 1447:static 1444:public 1345:static 1300:public 1279:static 1187:intent 1011:// 123 981:Modify 978:// 123 921:// 143 891:// 123 846:Modify 701:Pascal 675:thunks 614:Eiffel 595:strict 444:return 324:Python 282:Prolog 252:Simula 235:MATLAB 231:Scheme 131:f(a,b) 5083:(PDF) 5028:(PDF) 4950:S2CID 4924:(PDF) 4895:(PDF) 4614:(PDF) 4594:(PDF) 4571:(PDF) 4471:S2CID 4329:(PDF) 4248:OCaml 4226:S2CID 4206:(PDF) 3911:(PDF) 3900:(PDF) 3768:S2CID 3516:S2CID 3246:print 3061:Seed7 3039:thunk 2824:& 2812:& 2668:& 2638:& 2521:& 2361:above 2336:& 2284:& 2275:& 2096:print 2063:print 2002:print 1926:Maple 1818:Image 1815:' 1809:& 1779:begin 1713:begin 1630:alias 1591:value 1579:value 1429:value 1417:value 1405:value 1393:value 1333:value 1327:value 1312:value 1294:value 1282:class 1270:class 1263:inout 1193:inout 1154:! 2 1 1136:print 1115:call 951:begin 939:Array 873:begin 858:Array 813:Write 771:begin 741:Array 697:scope 662:false 618:OCaml 580:C++17 503:OCaml 450:print 420:print 381:1985 368:const 361:1985 336:1974 332:Julia 307:1971 286:1965 273:1962 256:1960 239:1960 223:ALGOL 214:1958 180:Table 151:ref_b 147:ref_a 102:, an 98:In a 5113:help 5087:ISBN 5063:ISBN 5002:(ps) 4961:2022 4940:ISBN 4903:2022 4871:ISBN 4850:2024 4819:ISBN 4792:ISBN 4765:ISBN 4712:2024 4651:2018 4618:ISBN 4554:2024 4500:2024 4461:ISBN 4424:2021 4392:ISBN 4362:ISBN 4341:2021 4188:2021 4155:ISBN 4128:ISBN 4089:ISBN 4050:2021 4024:2022 3858:2021 3823:ISBN 3731:2021 3674:ISBN 3646:ISBN 3617:ISBN 3583:ISBN 3546:ISBN 3506:ISBN 3463:ISBN 3442:2021 3429:ISBN 3317:eval 3240:main 3196:.NET 3095:pure 3065:Java 2968:endl 2944:cout 2920:swap 2881:main 2869:temp 2839:temp 2803:swap 2800:void 2793:swap 2786:swap 2755:read 2743:read 2713:swap 2608:main 2596:temp 2590:read 2566:read 2542:read 2536:temp 2515:temp 2467:swap 2464:void 2413:void 2377:read 2351:and 2349:read 2344:swap 2340:swap 2269:swap 2230:main 2218:temp 2176:temp 2140:swap 2137:void 1935:For 1910:Ruby 1906:Java 1868:and 1650:with 1643:GNAT 1519:swap 1462:args 1453:main 1450:void 1435:temp 1381:temp 1351:swap 1348:void 1321:this 1273:Main 1256:Main 1250:Swap 1244:temp 1220:temp 1217:temp 1163:Swap 1118:Swap 1079:Main 798:High 717:uses 711:Main 658:true 328:Ruby 320:Java 295:SASL 210:PL/I 208:II, 149:and 137:and 4932:doi 4453:doi 4290:doi 4218:doi 4214:VII 3815:doi 3758:doi 3575:doi 3498:doi 3421:doi 3279:1/0 3114:In 3000:In 2962:std 2938:std 2905:int 2890:int 2878:int 2836:int 2821:int 2809:int 2764:)); 2656:int 2647:int 2626:int 2617:int 2605:int 2599:)); 2575:)); 2551:)); 2509:int 2500:int 2485:int 2473:int 2434:int 2422:int 2383:int 2374:int 2363:): 2357:Box 2254:int 2239:int 2227:int 2173:int 2158:int 2146:int 2036:def 1951:def 1930:Tcl 1898:CLU 1855:out 1830:end 1827:)); 1752:end 1701:out 1659:use 1639:out 1637:or 1610:Box 1594:)); 1543:out 1507:Box 1504:new 1495:Box 1483:Box 1480:new 1471:Box 1378:int 1366:Box 1357:Box 1309:int 1303:Box 1291:int 1285:Box 1043:In 1014:end 930:Var 924:end 912:Row 894:Row 882:Row 852:Row 837:end 783:Low 774:for 756:var 720:crt 644:). 605:or 565:213 510:let 499:123 483:end 432:end 405:def 373:C++ 349:PHP 345:C++ 316:CLU 269:Ada 5159:: 5123:. 5105:: 5103:}} 5099:{{ 5061:. 5057:. 5039:. 5010:99 5008:. 5004:. 4948:. 4938:. 4926:. 4911:^ 4841:. 4728:. 4698:. 4668:. 4641:. 4573:. 4545:. 4508:^ 4491:. 4469:. 4459:. 4451:. 4415:. 4376:^ 4331:. 4288:. 4276:26 4274:. 4256:^ 4246:. 4224:. 4212:. 4208:. 4178:. 4087:. 4077:. 4069:; 4058:^ 4041:. 4015:. 4004:^ 3986:. 3959:. 3934:. 3902:. 3881:^ 3849:. 3831:. 3821:. 3794:. 3790:. 3766:. 3754:12 3752:. 3748:. 3721:. 3696:. 3660:^ 3644:. 3611:. 3581:. 3569:. 3528:^ 3514:. 3504:. 3496:. 3427:. 3281:. 3264:)) 3136:. 3041:. 2965::: 2941::: 2935:); 2884:() 2752:), 2728:); 2710:); 2692:); 2611:() 2314:); 2290:); 2233:() 2108:# 2075:# 2048:): 2031:: 1963:): 1922:ML 1797:); 1770::= 1737::= 1719::= 1710:is 1698:in 1695:: 1674:is 1534:); 1516:); 1492:); 1214::: 1199::: 1103::: 1088::: 1040:. 957::= 942:of 897::= 861:of 831:() 810:do 795:to 780::= 744:of 632:A 534:;; 505:: 480:), 417:): 375:, 355:, 353:C# 351:, 347:, 330:, 326:, 322:, 318:, 301:, 297:, 267:, 250:, 233:, 229:, 225:, 176:. 5115:) 5095:. 5071:. 5043:. 4982:. 4963:. 4934:: 4905:. 4879:. 4852:. 4827:. 4800:. 4773:. 4732:. 4714:. 4683:. 4653:. 4626:. 4556:. 4530:. 4502:. 4477:. 4455:: 4426:. 4400:. 4370:. 4343:. 4296:. 4292:: 4232:. 4220:: 4190:. 4163:. 4136:. 4108:. 4052:. 4026:. 3998:. 3971:. 3944:. 3920:. 3860:. 3817:: 3796:6 3774:. 3760:: 3733:. 3706:. 3682:. 3654:. 3625:. 3591:. 3577:: 3554:. 3522:. 3500:: 3471:. 3444:. 3423:: 3395:) 3389:( 3384:) 3380:( 3366:. 3275:f 3271:g 3261:0 3258:f 3255:( 3252:g 3249:( 3243:= 3237:1 3234:= 3231:y 3228:g 3225:x 3222:/ 3219:1 3216:= 3213:x 3210:f 3116:R 2986:} 2983:; 2980:0 2971:; 2956:b 2950:a 2932:b 2929:, 2926:a 2923:( 2917:; 2914:2 2911:= 2908:b 2902:; 2899:1 2896:= 2893:a 2887:{ 2875:} 2872:; 2866:= 2863:b 2860:; 2857:b 2854:= 2851:a 2848:; 2845:a 2842:= 2833:{ 2830:) 2827:b 2818:, 2815:a 2806:( 2779:} 2776:; 2773:0 2761:b 2758:( 2749:a 2746:( 2740:, 2734:( 2725:b 2722:, 2719:a 2716:( 2707:2 2704:, 2701:b 2698:( 2689:1 2686:, 2683:a 2680:( 2674:; 2665:= 2662:b 2659:* 2653:; 2644:; 2635:= 2632:a 2629:* 2623:; 2614:{ 2602:} 2593:( 2587:, 2584:b 2581:( 2572:b 2569:( 2563:, 2560:a 2557:( 2548:a 2545:( 2539:, 2533:( 2527:; 2518:= 2512:* 2506:; 2497:{ 2494:) 2491:b 2488:* 2482:, 2479:a 2476:* 2470:( 2461:} 2458:; 2455:v 2452:= 2449:p 2446:* 2443:{ 2440:) 2437:v 2431:, 2428:p 2425:* 2419:( 2410:} 2407:; 2404:p 2401:* 2395:{ 2392:) 2389:p 2386:* 2380:( 2329:} 2326:; 2323:0 2311:b 2308:, 2305:a 2302:, 2296:( 2287:b 2281:, 2278:a 2272:( 2266:; 2263:2 2260:= 2257:b 2251:; 2248:1 2245:= 2242:a 2236:{ 2224:} 2221:; 2215:= 2212:b 2209:* 2206:; 2203:b 2200:* 2197:= 2194:a 2191:* 2188:; 2185:a 2182:* 2179:= 2170:{ 2167:) 2164:b 2161:* 2155:, 2152:a 2149:* 2143:( 2105:) 2102:m 2099:( 2093:) 2090:m 2087:( 2084:f 2081:= 2078:m 2072:) 2066:( 2060:+ 2054:= 2042:( 2039:f 2011:) 2008:m 2005:( 1999:) 1996:m 1993:( 1990:f 1987:= 1984:m 1981:) 1978:1 1975:( 1969:. 1957:( 1954:f 1881:" 1836:; 1824:X 1821:( 1803:( 1794:X 1791:, 1788:X 1785:( 1776:; 1773:0 1764:: 1761:X 1758:; 1749:; 1746:2 1743:+ 1740:B 1734:B 1731:; 1728:1 1725:+ 1722:A 1716:A 1707:) 1692:B 1689:, 1686:A 1683:( 1665:; 1656:; 1600:} 1597:} 1588:. 1585:b 1582:, 1576:. 1573:a 1570:, 1564:( 1558:. 1552:( 1546:. 1540:. 1531:b 1528:, 1525:a 1522:( 1513:2 1510:( 1501:= 1498:b 1489:1 1486:( 1477:= 1474:a 1468:{ 1465:) 1456:( 1441:} 1438:; 1432:= 1426:. 1423:b 1420:; 1414:. 1411:b 1408:= 1402:. 1399:a 1396:; 1390:. 1387:a 1384:= 1375:{ 1372:) 1369:b 1363:, 1360:a 1354:( 1342:} 1339:} 1336:; 1330:= 1324:. 1318:{ 1315:) 1306:( 1297:; 1288:{ 1276:{ 1241:= 1238:b 1235:b 1232:= 1229:a 1226:a 1223:= 1208:b 1205:, 1202:a 1196:) 1190:( 1184:, 1178:) 1175:b 1172:, 1169:a 1166:( 1151:b 1148:, 1145:a 1142:, 1139:* 1133:) 1130:b 1127:, 1124:a 1121:( 1112:2 1109:= 1106:b 1097:1 1094:= 1091:a 1017:. 1008:; 1005:) 1002:A 999:( 993:; 990:) 987:A 984:( 975:; 972:) 969:A 966:( 960:; 954:A 948:; 936:: 933:A 927:; 918:; 915:) 909:( 903:; 900:4 888:; 885:) 879:( 870:; 867:) 855:: 849:( 840:; 834:; 825:; 822:) 819:a 816:( 807:) 804:a 801:( 792:) 789:a 786:( 777:i 768:; 762:: 759:i 753:; 750:) 738:: 735:a 732:( 723:; 714:; 558:) 555:2 552:f 549:+ 546:1 543:f 540:( 531:x 528:; 525:x 519:= 516:x 513:f 492:) 486:= 477:2 474:( 471:f 468:+ 465:) 462:1 459:( 456:f 453:( 447:x 441:) 435:= 429:, 426:x 423:( 414:x 411:( 408:f 377:C 303:R 227:C 139:b 135:a 87:e 80:t 73:v 20:)

Index

Call by name
Evaluation strategies
Lazy evaluation
Partial evaluation
Remote evaluation
Short-circuit evaluation
v
t
e
programming language
parameters
reduction strategy
references
assignment
PureScript
declarative languages
Datalog
calling convention
Fortran
PL/I
ALGOL
C
Scheme
MATLAB
ALGOL 60
Simula
Fortran IV
Ada
Prolog
SASL

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

↑