Ho letto alcuni post qui su chiusure e curriculum, ma mi sento come se non avessi trovato la risposta. Quindi quali sono le differenze e forse le somiglianze delle chiusure e dei curricula? Grazie per l'aiuto :)Quali sono le differenze e le possibili somiglianze tra chiusure e curricula?
risposta
Currying è davvero un concetto matematico prima di tutto. E 'la giusta osservazione che per qualsiasi n funzione ario f: S × ... S n → R, è possibile definire una nuova funzione fprime (appena trovato un bug Markdown!) Con n-1 parametri in cui quel primo parametro viene sostituito da una costante. Quindi, se si dispone di una funzione add(a,b)
, è possibile definire una nuova funzione add1(b)
come
add1(b) ::= add(1, b)
... leggere ":: =" come "è definito come".
A chiusura è più di un concetto di programmazione. (Naturalmente, tutto nella programmazione è anche un concetto matematico, ma le chiusure sono diventate interessanti a causa della programmazione.) Quando costruisci una chiusura, leghi una o più variabili; stai creando un pezzo di codice che ha delle variabili legate ad esso.
Il rapporto è che si può utilizzare una chiusura al fine di attuare currying: si potrebbe costruire la vostra funzione add1
sopra facendo una chiusura in cui tale primo parametro è destinato a 1.
Quello che hai descritto è valutazione parziale piuttosto che currying. Correlati, ma non esattamente uguali. –