Ketika membaca SICP yang terkenal itu, saya mendapati para penulis tampaknya agak enggan untuk memperkenalkan pernyataan penugasan kepada Skema di Bab 3. Saya membaca teks dan memahami mengapa mereka merasa begitu.
Karena Skema adalah bahasa pemrograman fungsional pertama yang pernah saya ketahui, saya agak terkejut bahwa ada beberapa bahasa pemrograman fungsional (bukan Skema tentu saja) yang dapat dilakukan tanpa tugas.
Mari gunakan contoh yang ditawarkan buku, bank account
contoh. Jika tidak ada pernyataan tugas, bagaimana ini bisa dilakukan? Bagaimana mengubah balance
variabel? Saya bertanya demikian karena saya tahu ada beberapa yang disebut bahasa fungsional murni di luar sana dan menurut teori lengkap Turing, ini harus dilakukan juga.
Saya belajar C, Java, Python dan menggunakan banyak tugas di setiap program yang saya tulis. Jadi ini benar-benar pengalaman yang membuka mata. Saya benar-benar berharap seseorang dapat menjelaskan secara singkat bagaimana tugas-tugas dihindari dalam bahasa pemrograman fungsional dan apa dampak mendalam (jika ada) pada bahasa-bahasa ini.
Contoh yang disebutkan di atas ada di sini:
(define (make-withdraw balance)
(lambda (amount)
(if (>= balance amount)
(begin (set! balance (- balance amount))
balance)
"Insufficient funds")))
Ini mengubah balance
oleh set!
. Bagi saya itu sangat mirip metode kelas untuk mengubah anggota kelas balance
.
Seperti yang saya katakan, saya tidak terbiasa dengan bahasa pemrograman fungsional, jadi jika saya mengatakan sesuatu yang salah tentang mereka, jangan ragu untuk menunjukkannya.
set!
atau fungsi lain yang diakhiri dengan a!
. Setelah Anda merasa nyaman dengan itu, transisi ke FP murni harus lebih mudah.