Call by value is a way to pass argument
s to subroutine
s in which the value itself is copied. As a consequence, any modification to the value within the subroutine will not be preserved after the subroutine terminates; this is cleaner
in the sense that it leads to a slightly more declarative
style of programming.
Call by reference, however, is less work if values can be large. Call by value return is just fun. And call by name is amazing.