手続き型で代入ができる言語では、参照透過性があり副作用がないサブルーチンって存在しないんだろうか。
int sum (int n) {
int i = 0;
int result = 0;
while (i <= n) {
result += i;
i += 1;
}
return result;
}
例えばこんなサブルーチンなら、ローカル変数のiとresultに再代入はするけど、同じ引数で毎回同じ結果になるし、ローカル変数以外には影響を与えない。
条件はおそらくこのくらいでいいはず。
こういうのがコンパイラやIDEで検知できれば便利そうなんだけど。
ツイートシェア