8
我讀了cats documentation關於typeclasses Apply
和Applicative
。我想知道爲什麼圖書館提供了兩個單獨的類型類,而不是僅僅一個類型類Applicative
,這將擴展Functor
並添加ap
?有沒有人使用Apply
那不是Applicative
?爲什麼我們需要分開Apply和Applicative類型的類?
我讀了cats documentation關於typeclasses Apply
和Applicative
。我想知道爲什麼圖書館提供了兩個單獨的類型類,而不是僅僅一個類型類Applicative
,這將擴展Functor
並添加ap
?有沒有人使用Apply
那不是Applicative
?爲什麼我們需要分開Apply和Applicative類型的類?
Applicative
提供了pure
方法,這是一種「進入」的方法。否則,儘管你可以轉換到F[A]
F[B]
,無論是與A => B
(通過map
)或F[A => B]
(通過ap
),你不必把任何一種F
內的能力。所以你只能讓別人爲你做。
與Applicative
的區別在於你的可以從中放入東西,從無到有。
由於這兩個可能是有用的(「你有權把東西放進一個F
」和「不用了,繼續你的手拿開,並在你給出什麼操作」),Applicative
和Apply
是單獨的類型類。
謝謝。我想我明白了。你可以舉一個例子,使用不是'Applicative'的'Apply'(例如,「放開手腳,按照你給的東西操作」)? – Michael
你可以想像各種情況。例如,如果您有一個想要處理的錯誤類型,但您不希望它能夠生成任何新錯誤或使用任何不是來自錯誤上下文的信息,則可能希望您的錯誤類型具有'應用'類型類,但不是'應用程序類'。 –