. gegen $ in haskell [duplizieren]

7

Ok, ich verstehe das:

%Vor%

kann umgeschrieben werden:

%Vor%

und kann auch neu geschrieben werden:

%Vor%

Was ich nicht vollständig begreife ist, wo die beiden sich NICHT in der Funktionalität überschneiden. Ich verstehe konzeptionell, dass sie sich nicht vollständig überschneiden, aber könnte jemand das für mich ein für allemal klären?

    
Ramy 02.02.2011, 16:11
quelle

3 Antworten

21
%Vor%

$ wendet eine Funktion auf einen Wert an. . setzt zwei Funktionen zusammen.

Also kann ich f $ g x schreiben, was "apply f to (g von x)" oder f . g $ x ist, was "die Zusammensetzung von f und g auf x anwendet". Ein üblicher Stil besteht darin, Punkte auf der linken Seite mit einem nachlaufenden Dollar zu stapeln. Der Grund ist, dass f $ g $ x dasselbe bedeutet wie f . g $ x , aber der Ausdruck f $ g allein ist oft bedeutungslos (tatsächlich möglicherweise ein Typfehler), während der Ausdruck f . g "die Zusammensetzung von f und g bedeutet "

    
sclv 02.02.2011, 16:16
quelle
14

Zusätzlich zu dem, was bereits gesagt wurde, benötigen Sie das $ als "Funktionsanwendungskleber" in Fällen wie diesem:

%Vor%

Weder (.3) noch (3) funktionieren im Beispiel.

    
Landei 02.02.2011 19:22
quelle
1

"f $ g x" kann nicht in "f. g x" umgeschrieben werden. Tatsächlich akzeptiert der Compiler nicht einmal die zweite Funktion, weil "(.)" Den Typ "(b - & gt; c) - & gt; (a - & gt; b) - & gt; (a - & gt; c ) ". Das zweite Argument muss eine Funktion sein, aber "g x" ist ein Wert, keine Funktion.

    
keiter 02.02.2011 16:20
quelle

Tags und Links