2008-12-17 9 views

risposta

6

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.

+0

Quello che hai descritto è valutazione parziale piuttosto che currying. Correlati, ma non esattamente uguali. –