函子可以是协变的,也可以是协变的。此协变/相反对偶性也可以应用于单子吗?
就像是:
class Monad m where
return :: a -> m a
(>>=) :: m a -> (a -> m b) -> m b
class ContraMonad m where
return :: a -> m a
contrabind :: m a -> (b -> m a) -> m b
请问ContraMonad
类有意义吗?有什么例子吗?
好吧,当然可以定义它,但是我怀疑它会没有用。
有一种流行的说法是:“单子类仅仅是在类内分泌者中的类群。” 首先,它的意思是我们有一个endofunctors类别(意思是,从某种类别到其本身的(协变)函子),而且,我们对该endofunctors有一些乘积(在这种情况下为composite)。然后monad适应了一些我们现在不必担心的通用框架。关键是,没有互变函子的“乘法”。两个协变函子的组成又是协变函子;但是两个逆变函子的组成不是逆变函子(而是协变函子,因此是完全不同的野兽)。
因此,“反单子”并没有真正的意义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句