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 accountesempio. Se non è presente alcuna istruzione di assegnazione, come è possibile farlo? Come modificare la balancevariabile? 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 balanceby 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.