Investigating Minimally Strict Functions in Functional Programming
In a non-strict programming language like Haskell a function only evaluates the parts of an argument that are necessary to calculate the result of an application. However, it is possible to define a function that is unnecessarily strict. That is, the function evaluates some part of its argument although this part is not needed to calculate the demanded part of the result. This thesis investigates the influence of unnecessary strictness on the memory behavior of a function and presents approaches for identifying and optimizing unnecessarily strict functions.