ALGOL 60 allowed for two evaluation strategies for parameter passing: the common call-by-value, and call-by-name. Call-by-name has certain effects in contrast to call-by-reference. For example, without specifying the parameters as "value" or "reference", it is impossible to develop a procedure that will swap the values of two parameters if the actual parameters that are passed in are an integer variable and an array that is indexed by that same integer variable. Think of passing a pointer to swap(i, Ain to a function. Now that every time swap is referenced, it is reevaluated. Say i := 1 and A[i := 2, so every time swap is referenced it will return the other combination of the values ([2,1, [1,2] and so on). A similar situation occurs with a random function passed as actual argument.