Katakanlah kita memiliki fungsi murni normal seperti
function add(a, b) {
return a + b
}
Dan kemudian kita mengubahnya sedemikian rupa sehingga memiliki efek samping
function add(a, b) {
writeToDatabase(Math.random())
return a + b;
}
Itu tidak dianggap sebagai fungsi murni sejauh yang saya tahu karena saya sering mendengar orang menyebut fungsi murni "fungsi tanpa efek samping." Namun, ia berperilaku seperti fungsi murni sejauh fakta bahwa ia akan mengembalikan output yang sama untuk input yang sama.
Apakah ada nama yang berbeda untuk jenis fungsi ini, apakah itu tidak disebutkan namanya, atau apakah masih benar-benar murni dan saya salah tentang definisi kemurnian?
writeToDatabase
gagal itu dapat memicu pengecualian sehingga membuat add
fungsi kedua Anda menghasilkan pengecualian kadang-kadang bahkan jika dipanggil dengan argumen yang sama yang sebelumnya tidak memiliki masalah ... sebagian besar waktu memiliki efek samping memperkenalkan jenis kondisi terkait kesalahan yang memecah "kemurnian input-output".
F(x)
didefinisikan untuk kembali true
jika dipanggil dengan argumen yang sama dengan panggilan sebelumnya. Jelas dengan urutan {1,2,2} => {undefined, false, true}
ini adalah deterministik, namun memberikan hasil yang berbeda untuk F(2)
.