Knowledge

Evaluation strategy

Source đź“ť

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

Index

Call by value
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.

↑