A ParameterPassing mode where the actual parameter is ''copied'' into the formal parameter at the point of function invocation (for example, implemented by copying into an agreed-upon register or location on the program stack). Has the following attributes and consequences: * Does not introduce aliasing; caller and callee get separate copies. * Does not allow callee to influence state of caller (modifications to callee's formal parameter have no effect on caller; though there is a similar mode called CallByValueResult where the callee's formal parameter is passed ''back'' when the function returns). * Can be expensive to implement for large mutable objects, especially those which cannot fit in registers. * Forces expression evaluation at each passing point, i.e. all SideEffect''''''s are pre-call. CallByValue refers to ParameterPassing modes with the above ''semantics'', even if implemented differently under the hood. ---- See ParameterPassing, CallByReference, ExplicitLazyProgramming, CallByThunk ---- CategoryLanguageFeature