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?
$
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 "
"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.
Tags und Links haskell