根据 Haskell wikibook,Monad
被调用m
的是Functor
带有两个额外操作的 a:
unit :: a -> m a
join :: m (m a) -> m a
这很好,但我有一些不同的东西。修饰血淋淋的细节,我有一种功能很好的类型unit
,join
但fmap
表现不佳(fmap g . fmap f
不一定fmap (g.f)
)。因此,它不能成为 的实例Monad
。尽管如此,我想给它尽可能多的通用功能。
所以我的问题是,什么类别的理论结构与单子相似,因为它们有一个unit
和join
?
我意识到在某种程度上,上述问题定义不明确。对于 monad,unit
andjoin
定义仅在定义方面才有意义fmap
。没有fmap
,您将无法定义任何单子定律,因此unit
/的任何定义join
都将同样“有效”。所以我正在寻找其他功能,而不是在这些和功能fmap
上定义一些“非单子”法则可能是有意义的。unit
join