当你查看
我理解它需要
我还发现
为什么一个setter通常需要
lens-family-core
包中的setting
时,你会发现它的类型是Identical f => ((a -> b) -> s -> t) -> LensLike f s t a b
,而Identical
被定义为class (Traversable f, Applicative f) => Identical f
。我理解它需要
Applicative
和Identical
,因为它使用了pure
和extract
,但我不确定为什么它还需要Traversable
。setting :: Identical f => ((a -> b) -> s -> t) -> LensLike f s t a b
setting sec f = pure . sec (extract . f)
我还发现
Setter
在lens
包中通过Settable
有一个Traversable
约束。所以我猜一个setter通常需要Traversable
。为什么一个setter通常需要
Traversable
?