问题主要在标题中.似乎mfix可以为任何monadic计算定义,即使它可能有所不同:
mfix
mfix :: (a -> m a) -> m a mfix f = fix (join . liftM f)
这个结构有什么问题?另外,为什么Monad和MonadFixtypeclass分开(即什么类型有一个实例Monad但没有MonadFix?)?
Monad
MonadFix
monads haskell monadfix
haskell ×1
monadfix ×1
monads ×1