ตาม Wikipedia:
ในการเขียนโปรแกรมคอมพิวเตอร์ฟังก์ชั่นอาจอธิบายได้ว่าบริสุทธิ์ถ้าทั้งสองคำสั่งเหล่านี้เกี่ยวกับฟังก์ชั่นไว้: ฟังก์ชั่นประเมินค่าผลลัพธ์เดียวกันเสมอให้ค่าอาร์กิวเมนต์ที่เหมือนกัน ค่าผลลัพธ์ของฟังก์ชันไม่สามารถขึ้นอยู่กับข้อมูลหรือสถานะใด ๆ ที่ซ่อนอยู่ซึ่งอาจเปลี่ยนแปลงได้เมื่อการดำเนินการของโปรแกรมดำเนินไปหรือระหว่างการดำเนินการที่แตกต่างกันของโปรแกรมและไม่สามารถขึ้นอยู่กับอินพุตภายนอกจากอุปกรณ์ I / O การประเมินผลลัพธ์ไม่ได้ทำให้เกิดผลข้างเคียงหรือเอาท์พุทที่สังเกตเห็นได้ทางความหมายเช่นการกลายพันธุ์ของวัตถุที่ไม่แน่นอนหรือเอาท์พุทไปยังอุปกรณ์ I / O
ฉันสงสัยว่ามันเป็นไปได้ที่จะเขียนฟังก์ชั่นที่คำนวณว่าฟังก์ชั่นนั้นบริสุทธิ์หรือไม่ รหัสตัวอย่างใน Javascript:
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
กันการตรวจสอบฟังก์ชันหลายครั้งสำหรับพฤติกรรมที่สอดคล้องกันจะไม่ช่วย แต่ถ้าคุณมีการเข้าถึงนิยามฟังก์ชันการพิสูจน์นั้นเป็นเรื่องเล็กน้อย
say
โทรconsole.log
ที่ไม่บริสุทธิ์จึงsay
ไม่บริสุทธิ์เช่นกัน