I understand the basic concept of call-by-name and call-by-value, and I have also looked into handful number of examples. However, I am not very clear about when to use call-by-
When a call-by-name parameter is used more than once in a function, the parameter is evaluated more than once.
As the parameter being passed in should be a pure function call per Functional Programming, each evaluation within the called function will always generate the same result. Therefore, call-by-name would be more wasteful than the conventional call-by-value.