Warum müssen wir die Klassen Apply und Applicative type unterscheiden?

8

Ich habe die Katzendokumentation über typeclasses Apply und Applicative gelesen. Ich frage mich, warum die Bibliothek zwei separate Typklassen statt nur einer Typklasse Applicative bietet, die Functor erweitern und ap hinzufügen würde? Benutzt jemand Apply , das nicht Applicative ist?

    
Michael 25.04.2016, 18:26
quelle

1 Antwort

12

Applicative liefert die pure -Methode, die ein Weg zum "Einstieg" ist. Wenn Sie <%>% F[A] in F[B] konvertieren konnten, entweder mit A => B (über map ) oder F[A => B] (über ap ), haben Sie andernfalls nicht die Kapazität etwas in eine F einfügen. Du bist also darauf beschränkt, dass andere es für dich tun.

Der Unterschied zu Applicative besteht darin, dass Sie Dinge einfügen können, indem Sie von nichts ausgehen.

Da beide nützlich sein können ("Sie sind befugt, Dinge in ein F zu legen" und "nein, halten Sie Ihre Hände weg und operieren Sie mit dem, was Ihnen gegeben wurde"), sind Applicative und Apply separate typeclasses.

    
Rex Kerr 25.04.2016, 18:37
quelle

Tags und Links