Durante la lettura del famoso SICP, ho trovato gli autori piuttosto riluttanti a introdurre la dichiarazione di assegnazione su Scheme nel Capitolo 3. Ho letto il testo e capisco perché lo sentano così.
Poiché Scheme è il primo linguaggio di programmazione funzionale di cui io abbia mai saputo qualcosa, sono sorpreso che ci siano alcuni linguaggi di programmazione funzionali (non Scheme, naturalmente) che possono fare senza incarichi.
Utilizza l'esempio offerto dal libro, l'esempio bank account
. Se non c'è una dichiarazione di assegnazione, come può essere fatto? Come modificare la variabile balance
? Lo chiedo perché so che ci sono alcuni cosiddetti linguaggi puramente funzionali e, secondo la teoria completa di Turing, anche questo può essere fatto.
Ho imparato C, Java, Python e uso molte assegnazioni in ogni programma che ho scritto. Quindi è davvero un'esperienza che apre gli occhi. Spero davvero che qualcuno possa spiegare brevemente come si evitano i compiti in quei linguaggi di programmazione funzionale e quale impatto profondo (se esiste) ha in queste lingue.
L'esempio sopra menzionato è qui:
(define (make-withdraw balance)
(lambda (amount)
(if (>= balance amount)
(begin (set! balance (- balance amount))
balance)
"Insufficient funds")))
Questo ha cambiato il balance
di set!
. Per me sembra molto simile a un metodo di classe per cambiare il membro della classe balance
.
Come ho detto, non ho familiarità con i linguaggi di programmazione funzionale, quindi se ho detto qualcosa di sbagliato su di essi, sentitevi liberi di farlo notare.