是否可以使用javascript确定javascript函数是否"纯粹"?
当一个函数以可预测的方式运行时,它被认为是纯函数,在每个x的意义上,函数将始终返回相同的关联y值(即单值映射).
例如,一个纯函数:
function pure(x) {
return x * x;
}
Run Code Online (Sandbox Code Playgroud)
并且不纯洁:
var x = 0;
function impure(y) {
x = x + y;
return x++;
}
Run Code Online (Sandbox Code Playgroud)
虽然这里很容易辨别出来impure(0) !== impure(0),但它的功能并不明显,例如:
function weird(x) {
if (x === "specificThing") {
return false;
} else {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
要么
var count = 0;
function surprise(x) {
count++;
if (count === 10e10 && x === 0) {
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
问这个的另一种方法是,是否可以使用javascript确定javascript函数是否"不纯"?
从理论上讲,它可能是不可能的,但实际上可以采取哪些步骤来开始确定这一点,可能给出一组约束或假设? …
javascript algorithm functional-programming static-analysis function