Nehmen wir an, wir haben diese punktefreie Funktion:
%Vor%Ich habe keine Ahnung, wie genau es funktioniert und was es tun soll? I.e. Ich weiß, was map, const und Flip-Funktionen sind. Aber sie so zusammenzusetzen ergibt für mich keinen Sinn. Was genau passiert in dieser Funktion? Es scheint das gleiche zu geben, in das ich jedes Mal hineinkomme, aber ... Warum?
Beachten Sie, dass alle Funktionen in Haskell nur ein Argument enthalten, aber simulieren Sie mehrere Argumente, indem Sie eine andere Funktion zurückgeben. So kann flip const map
auch als (flip const) map
geschrieben werden. const
ignoriert normalerweise das zweite Argument und gibt das erste Argument zurück. flip
kehrt die Reihenfolge der Argumente um, sodass flip const
das erste Argument ignoriert und das zweite Argument zurückgibt. So wird map
ignoriert und eine Funktion zurückgegeben, die immer ihr Argument zurückgibt.
Es spielt wirklich keine Rolle, wenn Sie etwas anderes als map
dort eingeben. Der Ausdruck flip const
dreht die Argumente von const
um, so dass das erste Argument immer zurückgegeben wird und das zweite Argument zurückgegeben wird. Sie können dies testen, indem Sie f1 = flip const undefined
neu definieren. Dies führt zu einer Ausnahme, wenn undefined
jemals ausgewertet wird, aber Sie können sehen, dass es das gleiche Verhalten gibt. Im Wesentlichen flip const undefined = id
.