Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Currying
Ich komm mit dem Currying in Scala irgendwie nicht zurecht:
Übungsblatt 11 (SS 2013) Aufgabe 11.4 f)
da habe ich einfach die Funktion curried angewendet, weiß aber nicht, wie man das sonst machen soll…
def curry: ((Int,Int) => Int) => (Int => Int => Int) = {
g => g.curried
}
11.4 g)
def uncurry: (Int => Int => Int) => ((Int,Int) => Int)
wie soll man da vorgehen? habe schon sämtliche Varianten probiert, aber nichts funktioniert.
[m]
def curry: ((Int, Int) => Int) => (Int => Int => Int) =
f => a => b => f(a,b)
[/m]
Und zwar liest du das wie folgt:
Du definierst dir die Methode curry - Diese erwartet eine Funktion mit der Signatur [m]((Int, Int) => Int)[/m]. Da diese nicht-ge-curry-te[1] Funktion jetzt ja 2 Argumente erwartet, uebergibst du der ge-curry-ten Variante ebenfalls 2 Argumente, aber Hintereinander, also [m]Int => Int => Int[/m] (das letzte [m]=> Int[/m] entspricht hierbei dem Ergebnis).
Ich glaub die Erklaerung war jetzt nicht unbedingt verstaendlich - aber sagt die Faerbung des Codes ja genug aus (hoffentlich passt das auch so 0.o).
[1] aua
edit 1: bitte ergaenzen/korrigieren wenn 's jmd. wirklich weisz