A programming language uses an evaluation strategy to determine when to evaluate the argument(s) of a function call (for function, also read: operation, method, or relation) and what kind of value to pass to the function. For example, call-by-value/pass-by-reference specifies that a function application evaluates the argument before it proceeds to the evaluation of the function's body and that it passes two capabilities to the function, namely, the ability to look up the current value of the argument and to modify it via an assignment statement. The notion of reduction strategy in lambda calculus is similar but distinct.
In practical terms, many modern programming languages have converged on a call-by-value, pass-by-reference strategy for function calls (C#, Java). Some older languages, especially unsafe languages such as C++, combine several notions of parameter passing. Historically, call-by-value and call-by-name date back to ALGOL 60, a language designed in the late 1950s. Call-by-reference is used by PL/I and some Fortran systems. Purely functional languages like Haskell, as well as non-purely functional languages like R, use by-need.
i can't believe i finally found
the key, the door, the trip
it was all in my mind
now i'm one with the fools of love
i can't believe i finally found
the prisoner, the free man
were all in my mind
now i'm one with the fools of love
these fools of love are misunderstood
their history is with me now
i can't believe my core was shaken
i gave up the ghost of everything i was before
now i'm one with the fools of love
so call me a fool
call me a fool
call me a fool
i can't believe my dream is over
i woke up this morning with nothing but light in my eyes
now i'm one with the fools of love
i can't believe the key, the door,
the clouds that blocked the sun
they were all in my mind
now I'm one with the fools of love