reversed performed parallel cannot interfere one another terms evaluation pure expression thread safe entire language allow side effects evaluation strategy used gives compiler freedom reorder combine evaluation expressions program example using deforestation compilers imperative programming languages detect pure functions perform common subexpression elimination pure function calls cannot always pre compiled libraries generally expose information thus preventing optimizations involve
Formal science Computer science Programming languages Functional programming