Ich habe ein Lambda \x f -> f x
, das in einer Operation foldM
verwendet wird, wobei x
ein Wert und f :: a -> b
ist.
Gibt es dafür eine eingebaute Funktion?
Kann ich
ersetzen? %Vor% mit einigen f'
Ich dachte, dass flip
dies tun würde, aber es benötigt drei Argumente ( flip :: (a -> b -> c) -> b -> a -> c
)
Es ist wahrscheinlich ähnlich zu |>
in F #.
Sie können flip id
oder flip ($)
verwenden (da ($)
nur eine spezielle id
für Funktionen ist):
Dies ist eine interessante Anwendung der partiellen Anwendung: id f x
mit f
ist eine Funktion ist nur f x
. Offensichtlich ist dies auch das gleiche wie (flip id) x f
, also ist flip id
die Funktion, nach der Sie suchen.
Wenn Sie abenteuerlustig sind, versuchen Sie, den Typ von flip id
oder flip ($)
manuell abzuleiten. Es macht Spaß:)
Ja, es heißt flip :: (a -> b -> c) -> b -> a -> c
, z. %Code%. Weitere Informationen und Quellen zum Thema Hack: flip .
Was Sie wollen, ist einfach die Argumente der Funktionsanwendung umzukehren, oder?
Nun, da flip (>) 3 5 == True
eine Funktion ist, können Sie ($)
schreiben. Lass sehen was passiert. Hier ist die Quelle für die zwei Prelude-Funktionen:
Also, im Grunde, wenn Sie die Typen zusammenstellen, wird flip ($) :: b -> (b -> c) -> c
Wenn Sie den tatsächlichen Definitionen der Funktionen folgen:
%Vor%Tags und Links haskell