Saya harus mengakui bahwa saya tidak tahu banyak tentang pemrograman fungsional. Saya membacanya dari sana-sini, dan jadi tahu bahwa dalam pemrograman fungsional, fungsi mengembalikan output yang sama, untuk input yang sama, tidak peduli berapa kali fungsi dipanggil. Persis seperti fungsi matematika yang mengevaluasi ke output yang sama untuk nilai yang sama dari parameter input yang terlibat dalam ekspresi fungsi.
Sebagai contoh, pertimbangkan ini:
f(x,y) = x*x + y; // It is a mathematical function
Tidak peduli berapa kali Anda menggunakan f(10,4)
, nilainya akan selalu 104
. Dengan demikian, di mana pun Anda menulis f(10,4)
, Anda dapat menggantinya dengan 104
, tanpa mengubah nilai keseluruhan ekspresi. Properti ini disebut sebagai transparansi referensial ekspresi.
Seperti kata Wikipedia ( tautan ),
Sebaliknya, dalam kode fungsional, nilai output suatu fungsi hanya bergantung pada argumen yang merupakan input ke fungsi, sehingga memanggil fungsi f dua kali dengan nilai yang sama untuk argumen x akan menghasilkan hasil yang sama f (x) pada kedua kali.
Bisakah fungsi waktu (yang mengembalikan waktu saat ini ) ada dalam pemrograman fungsional?
Jika ya, lalu bagaimana itu bisa ada? Apakah itu tidak melanggar prinsip pemrograman fungsional? Ini khususnya melanggar transparansi referensial yang merupakan salah satu properti pemrograman fungsional (jika saya memahaminya dengan benar).
Atau jika tidak, lalu bagaimana orang bisa tahu waktu saat ini dalam pemrograman fungsional?