在Haskell中,给定一个单子monad
类似地,给定一个余子comonad
现在假设我有一个程序,它使用了既有单子
m
,有一个函数mfix :: (a -> m a) -> m a
,可以计算单子计算的不动点。类似地,给定一个余子comonad
w
,有一个函数cofix :: w (w a -> a) -> a
,可以计算余子计算的不动点。现在假设我有一个程序,它使用了既有单子
m
,又有余子w
,它们之间有一个余单分配律distr :: w (m a) -> m (w a)
。那么是否可能将mfix
和cofix
组合成一个类型为w (w a -> m a) -> m a
的函数,以计算单子和余子计算的fixpoint?
w (w a -> m a)
的参数来测试我们的答案吗?另外,你考虑过使用a = m b
特化cofix
吗?它的类型与你要求的略有不同,但仍然非常有用。 - Li-yao Xiaw
和Maybe单子m
,如此一来,就能够得到本文第六节所介绍的方法。 - Bob