Leggendo il famoso SICP, ho scoperto che gli autori sembrano piuttosto riluttanti a presentare la dichiarazione di incarico a Scheme nel capitolo 3. Ho letto il testo e ho capito perché si sentono così.
Dato che Scheme è il primo linguaggio di programmazione funzionale di cui io abbia mai saputo qualcosa, sono un po 'sorpreso che ci siano alcuni linguaggi di programmazione funzionale (non Scheme ovviamente) che possono fare a meno dei compiti.
Usiamo l'esempio offerto dal libro, l' bank account
esempio. Se non è presente alcuna istruzione di assegnazione, come è possibile farlo? Come modificare la balance
variabile? Lo chiedo perché so che ci sono alcuni cosiddetti linguaggi funzionali puri là fuori e secondo la teoria completa di Turing, anche questo può essere fatto.
Ho imparato C, Java, Python e uso molto i compiti in ogni programma che ho scritto. Quindi è davvero un'esperienza che apre gli occhi. Spero davvero che qualcuno possa spiegare brevemente come vengono evitati gli incarichi in quei linguaggi di programmazione funzionale e quale impatto profondo (se presente) ha su questi linguaggi.
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
by set!
. Per me sembra un metodo di classe 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 loro, sentiti libero di sottolineare.
set!
o altre funzioni che finiscono con a!
. Una volta che ti senti a tuo agio con questo, il passaggio a FP puro dovrebbe essere più facile.