Mostly all programming languages follow two primary ways of evaluating function calls. Call by Value / Eager evaluation Call by Name / Lazy Evaluation Both evaluating strategies reduce to the same final value as long as the following hold true ::...