我试图在lens
中获得关于Setters的一些直觉。很容易遇到IndexedSetter,这需要相当令人生畏的Conjoined
类:
class
( Choice p, Corepresentable p, Comonad (Corep p), Traversable (Corep p)
, Strong p, Representable p, Monad (Rep p), MonadFix (Rep p), Distributive (Rep p)
, Costrong p, ArrowLoop p, ArrowApply p, ArrowChoice p, Closed p
) => Conjoined p where
但是对于功能而言,它非常简单:
class Conjoined p => Indexable i p where
-- | Build a function from an 'indexed' function.
indexed :: p a b -> i -> a -> b
instance Indexable i (->) where
indexed = const
似乎i
除了作为p a b
之后的参数之外没有任何约束。
什么使它成为“索引”,在使用Setter
s时我应该关心它吗?