use*_*134 10 haskell typeclass
我的理解Sum
和Product
newtypes是它们用于数值类型为monoidial包装.我想了解Functor
他们的实例,但为什么还有Applicative
,Monad
任何其他许多看似无用的情况下?我知道它们在数学上是可以的(与Identity
modad 同构,对吧?)但是用例是什么?Applicative Sum
例如,如果存在实例,我希望在Sum (a -> b)
某处遇到类型的值.我无法想象这可能有用的地方.
Dan*_*ner 11
这样的实例便于提升任意函数来处理当前生活在一个Sum
或多个内部的事物Product
.例如,人们可能会想象想要对某些东西进行一些按位操作,这些操作在Sum
裸露方面比较方便; 然后liftA2 (.&.) :: Sum Int -> Sum Int -> Sum Int
(例如).
人们也可以通过给出一个Bits
实例来提供这个操作Sum
,但是推广该技术需要实现者Sum
预测一个人可能想要做的每个操作,这看起来很高.提供Applicative
和Monad
实例为用户提供一劳永逸的翻译,以提升他们喜欢的任何功能 - 包括实现者Sum
预测无用的功能.