Apakah mungkin menggunakan tipe statis atau dependen untuk membuktikan fungsi idempoten?
Saya telah mencari Google dan berbagai tempat di StackOverflow / StackExchange untuk jawabannya tetapi tidak berhasil. Yang paling dekat yang saya temukan adalah percakapan tentang Idris ini: https://groups.google.com/forum/#!topic/idris-lang/yp7vrspChRg
Sayangnya, diskusi itu sedikit di luar kepala saya.
Jawaban:
Untuk fungsi-fungsi tertentu. Terutama ketika Anda tahu fungsinya ;-)
Jika Anda maksud dengan pertanyaan Anda "apakah ada algoritma untuk memutuskan secara otomatis jika fungsi arbitrer idempoten atau tidak", jawabannya tidak, karena teorema yang telah disebutkan dalam komentar. Namun, untuk kelas fungsi tertentu, seseorang dapat - dalam teori - sangat mudah memutuskan apakah fungsi tersebut idempoten atau tidak. Misalnya, jika fungsinya murni (berarti: tanpa efek samping), dan orang tahu itu selalu mengembalikan nilai dalam jumlah waktu terbatas untuk setiap input yang diberikan, maka idempotensi dapat diputuskan hanya dengan mencoba jika
f(f(x))=f(x)
ada kemungkinan inputx
ke fungsi. Bukannya ini akan sangat efisien, itu bisa berjalan sampai akhir jagat raya.Jadi jika itu bukan jawaban yang Anda cari, tulis pertanyaan yang lebih baik, saat ini cukup tidak jelas apa sebenarnya yang sebenarnya Anda cari.
sumber