f1 = flip const map. Wie funktioniert diese Funktion?

8

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?

    
Peter Bosák 04.10.2013, 14:21
quelle

3 Antworten

5

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.

    
Dirk Holsopple 04.10.2013, 14:31
quelle
14

Mal sehen, was diese Funktion tut, Stück für Stück

%Vor%

Deshalb gibt es immer zurück, was Sie ihm geben!

    
Tom Ellis 04.10.2013 16:39
quelle
4

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 .

    
bheklilr 04.10.2013 14:27
quelle

Tags und Links