Tag: 分隔延续

使用MonadRef来实现MonadCont

有一个众所周知的问题, 我们不能使用foralltypes中的所有types 。 但是应该可以有以下定义: class Monad m => MonadCont' m where callCC' :: ((a -> forall b. mb) -> ma) -> ma shift :: (forall r.(a -> mr) -> mr) -> ma reset :: ma -> ma 然后find一个有意义的实例。 在本文中 ,作者声称我们可以在MonadFix上面实现MonadFix并提供m实现的MonadFix和MonadRef 。 但是我想如果我们有一个MonadRef我们实际上可以实现callCC' : –satisfy law: mzero >>= f === mzero class Monad m => MonadZero […]