Wikipedia'ya göre:
Bilgisayar programlamasında, işlev tutma ile ilgili bu ifadelerin her ikisi de bir işlev olarak tanımlanabilir: İşlev, aynı bağımsız değişken değerleri verildiğinde her zaman aynı sonuç değerini değerlendirir. İşlev sonuç değeri, program yürütme ilerledikçe veya programın farklı yürütmeleri arasında değişebilecek hiçbir gizli bilgiye veya duruma veya G / Ç aygıtlarından gelen herhangi bir harici girdiye bağlı olamaz. Sonucun değerlendirilmesi, değiştirilebilir nesnelerin mutasyonu veya G / Ç cihazlarına çıktı gibi herhangi bir anlamsal olarak gözlenebilir yan etkiye veya çıktıya neden olmaz.
Bir fonksiyonun saf olup olmadığını hesaplayan bir fonksiyon yazmanın mümkün olup olmadığını merak ediyorum. Javascript'teki örnek kod:
function sum(a,b) {
return a+b;
}
function say(x){
console.log(x);
}
isPure(sum) // True
isPure(say) // False
if (rand(1000000)<2) return WRONG_ANSWER
, tutarlı bir davranış için işlevi birçok kez araştırmak yardımcı olmaz. Ancak, işlev tanımına erişiminiz varsa, kanıt önemsizdir.
say
çağrılar console.log
da say
saf değildir.