Ja, es ist das gleiche.
Currying ist ein Konzept aus Kalkül. Es ist eine Transformation zwischen A × B → C und A → ( B → C ) . Stellen Sie sich dies als "Wenn wir eine Funktion von zwei Argumenten vom Typ A und B haben , können wir das erste Argument (vom Typ A ) korrigieren und erhalten eine Funktion des verbleibenden Arguments (vom Typ B )". Tatsächlich ist diese Transformation ein Isomorphismus. Dies wird mathematisch präzisiert durch mathematische Modelle des (typisierten) λ- Kalküls, die kartesische geschlossene Kategorien sind .λA × B → C.A → ( B → C.)EINB.EINB.λ
Es gibt eine Kategorie von nummerierten Sätzen. Eine nummerierte Menge ist ein Paar wobei A eine Menge ist und ν A : N → A eine partielle Surjektion ist, dh eine Abbildung von Zahlen auf A , die auch undefiniert sein kann. Wenn ν A ( n ) = x ist, dann sagen wir, dass n φ von teilweise berechenbaren Funktionen ist, so dass φ n ( k ) die Zahl ist, die durch die von n codierte teilweise berechenbare Funktion berechnet wird( A , νEIN)EINνEIN: N → A.EINνEIN( n ) = xn ein Code von . In der Berechenbarkeitstheorie gibt es viele Beispiele. Immer wenn wir Informationen mit einer Nummer codieren, erhalten wir einen nummerierten Satz. Zum Beispiel gibt es eine Standardnummerierungxφφn( k )n wenn sie auf angewendet wird . (Das Ergebnis ist möglicherweise undefiniert.)k
Ein Morphismus nummerierter Mengen ist eine realisierte Abbildung , was bedeutet, dass n ∈ N existiert, so dass f ( ν A ( k ) ) = ν B ( φ n ( k ) ) für alle k in der Domäne von ν Af: ( A , νEIN) → ( B , νB.)n ∈ N.f( νEIN( k ) ) = νB.( φn( k ) )kνEIN . Das sieht kompliziert aus, aber alles, was es sagt, ist, dass φntut, um zu codieren, was mit Elementen macht. Es ist die mathematische Art zu sagen, dass "Programm ϕ n die Funktion f implementiert ".fϕnf
Hier ist die Pointe: Die Kategorie der nummerierten Sätze ist kartesisch geschlossen. Wir können daher den typisierten Kalkül darin interpretieren und fragen, welches Programm die Currying-Operation implementiert. Die Antwort lautet: das vom smn-Theorem gegebene Programm.λ