Ich lese in cats documentation über Typklassen Apply
und Applicative
. Ich frage mich, warum die Bibliothek zwei separate Typklassen statt nur einer Typklasse Applicative
bietet, die Functor
erweitern und ap
hinzufügen würde? Nutzt jemand Apply
das ist nicht Applicative
?Warum müssen wir die Klassen Apply und Applicative type unterscheiden?
8
A
Antwort
12
Applicative
bietet die pure
Methode, die eine Möglichkeit ist, "hineinzukommen". Ansonsten, auch wenn Sie F[A]
zu F[B]
, entweder mit A => B
(via map
) oder F[A => B]
(via ap
) umwandeln könnte, Sie haben nicht die Fähigkeit, alles innerhalb eines F
zu setzen. Sie dürfen also nur zulassen, dass andere es für Sie tun.
Der Unterschied Applicative
ist, dass Sie Dinge in setzen, aus dem Nichts.
Da entweder kann nützlich sein („Sie sind befugt, Dinge in eine F
zu setzen“ und „nein, halten Sie Ihre Hände weg, und arbeiten auf, was Sie gegeben“), Applicative
und Apply
sind separate typeclasses.
Vielen Dank. Ich denke ich habe es. Könnten Sie ein Beispiel für die Verwendung von "Apply" geben, das nicht "Applicative" ist (wie in "Halten Sie Ihre Hände weg und operieren Sie mit dem, was Ihnen gegeben wurde")? – Michael
Sie können sich alle möglichen Fälle vorstellen. Wenn Sie beispielsweise einen Fehlertyp hatten, den Sie verarbeiten wollten, aber nicht möchten, dass neue Fehler generiert werden oder Informationen verwendet werden können, die nicht aus einem Fehlerkontext stammen, könnte der Fehlertyp gewünscht sein eine 'Apply'-Klasse, aber keine' Applicative'. –