そんな難しく考えなくても計算機に与える命令のつらなりってことじゃないの?
命令には純粋っぽい命令とそうでない命令があるけど、計算(評価)前ならどんな命令だろうが単なる値だから副作用もへったくれもないって理屈じゃね
実際はメモリー上の命令は全て状態だけど、書き換えられないように管理すれば純粋とみなせるってことだろ
例えば、
1+2*2^2^-1+3*3^3^-1
という式を考えた場合、これ全体を値として捉えることもできる
実際値として使おうとすると+、*、^の部分を命令として評価しないといけないけど、使い方によっては全部評価する必要はない
これに10足したかったら
11+2*2^2^-1+3*3^3^-1
で済ますこともできる
これを小数点以下10桁まで表示したくなった時、必要な桁まで計算(評価)すれば良い
‭18.1551758356…
Haskellの基本的な考え方はこういうことでしょ