根据 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,unitandjoin定义仅在定义方面才有意义fmap。没有fmap,您将无法定义任何单子定律,因此unit/的任何定义join都将同样“有效”。所以我正在寻找其他功能,而不是在这些和功能fmap上定义一些“非单子”法则可能是有意义的。unitjoin