Ich lerne Haskells Bewerber. Es scheint mir (ich liege wahrscheinlich falsch), dass diepure Funktion nicht wirklich benötigt wird, zum Beispiel:
pure (+) <*> [1,2,3] <*> [3,4,5]
kann geschrieben werden als
(+) <$> [1,2,3] <*> [3,4,5]
Kann jemand den Nutzen erklären, den die pureFunktion gegenüber der expliziten Zuordnung bietet fmap?
pureermöglicht es einem, "reine" Werte in einer anwendbaren Berechnung zu verwenden. Während, wie Sie richtig beobachten, pure f <*> xdasselbe ist wie f <$> x, gibt es kein solches Äquivalent für beispielsweise f <*> x <*> pure y <*> z. (Zumindest glaube ich nicht.)
MonoidKlasse verknüpft -, die puredem MonoidIdentitätselement entspricht. (Dies deutet darauf hin, dass Applicativeohne pureinteressant sein könnte, da Semigroup- was ein ist, Monoidohne unbedingt eine Identität zu haben - immer noch verwendet wird. Eigentlich denke ich jetzt daran, dass PureScript genau eine solche pureKlasse "Applikativ ohne " hat, obwohl ich es nicht tue Ich weiß nicht, wofür es verwendet wird.)
fmap (\f' x' z' -> f' x' y z') f <*> x <*> z, denke ich. Die Idee ist in der ApplicativeDokumentation als Gesetz des "Austauschs".
pure f <*> xist genau das gleiche wiefmap f x. Ich bin mir sicher, dass es einen Grund gibt, warum diespureaufgenommen wurdeApplicative, aber ich bin mir nicht ganz sicher, warum.