Fachkonzeptthema
Currying
Jede Funktion, die mehrere Übergabedaten erhält, kann alternativ auch durch eine Kette von Funktionen dargestellt werden, in der die Übergabedaten nacheinander angenommen werden.
Syntaktisch gelingt dies in Racket, indem mehrere Parameter nicht mehr gemeinsam in einem lambda-Ausdruck
gebündelt werden, sondern für jeden Parameter (p-i) ein neuer verschachtelter lambda-Ausdruck formuliert wird.
So lässt sich eine Funktion mit n Übergabedaten der Form:
(: function (%1 %2 ... %n -> %r))
(define function
  (lambda (p-1 p-2 ... p-n)
    ... ))
(: function-curry (%1 -> (%2 -> (... -> (%n -> %r)))))
(define function-curry
  (lambda (p-1)
    (lambda (p-2)
      (...
       (lambda (p-n)
    ... )...))))
Ein vollständiger Aufruf der durch function-curry definierten Kette von Funktion sähe mit den Übergabedaten 
(d-i) entsprechend wie folgt aus:    
(((...((function-curry d-1) d-2) ... ) d-n-1) d-n)
Partielle Funktionsanwendung
Mögliche partielle Funktionsanwendung wären entsprechend die folgenden:
;Partielle Funktionsanwendung mit einem Übergabedatum    
(function-curry d-1)
;Partielle Funktionsanwendung mit zwei Übergabedaten
((function-curry d-1) d-2)
;...
;Partielle Funktionsanwendung mit n-1 Übergabedaten    
((...((function-curry d-1) d-2) ... ) d-n-1)
p-i) für die bereits übergebenen Daten (d-i) festgelegt und die fehlenden
Übergabedaten durch die nachfolgende Kette von Funktionen erwartet.
Beispiel
Die Funktion rabatt mit zwei Übergabedaten:
(: rabatt (real real -> real))
(define rabatt
  (lambda (prozent preis)
      (* preis (- 1 (/ prozent 100)))))
(: rabatt-curry (real -> (real -> real)))
(define rabatt-curry
  (lambda (prozent)
    (lambda (preis)
      (* preis (- 1 (/ prozent 100))))))
Die partielle Funktionsanwendung mit dem Übergabedatum 20:
(rabatt-curry 20)
(lambda (preis)
      (* preis (- 1 (/ 20 100))))
