OK, es war ein langer Tag und mein Gehirn funktioniert möglicherweise nicht auf Haskell Ebene, aber ich kann nur ein Beispiel aus "Lernen Sie ein Haskell" nicht verstehen.Funktion Anwendung in Haskell
Der Abschnitt Funktion Anwendung mit $ genannt wird, und es ist Beispiel dafür, wie $
definiert werden:
($) :: (a -> b) -> a -> b
f $ x = f x
Bisher ist alles klar. Ich verstehe alle Beispiele in dem Abschnitt, mit Ausnahme des zuletzt:
ghci> map ($ 3) [(4+), (10*), (^2), sqrt]
[7.0,30.0,9.0,1.7320508075688772]
Hier stellen wir ($ 3)
über Liste der Funktionen der Karte und das Ergebnis der Anwendung dieser Funktionen zu 3
bekommen. Aber wie ist das möglich?
Vom ersten Codeausschnitt ist es klar, dass das erste Argument eine Funktion ist, können wir auch schreiben:
*Main> ($) sqrt 4
2.0
Jetzt ($ 3)
eine partielle Anwendung der Funktion ist $
, aber 3
geht auf Funktion Position! Also 3
soll eine Funktion sein oder was?
Es gibt ein anderes Geheimnis: Was zum Teufel ist (4+)
? Ich weiß, dass (+4)
ist eine teilweise Anwendung der Funktion +
, so (4+)
sollte teilweise Anwendung der Funktion 4
sein? Unsinn. Was für ein Trick funktioniert hier?
mögliches Duplikat von [Teilanwendung mit Infix-Funktionen] (http://stackoverflow.com/questions/10131300/partical-application-with-infix-functions) – Lambdageek