我刚刚在haskell-cafe上问这个,但我想我也可以在这里问一下.以下Monad实例是否Backwards m有效?
{-# Language RecursiveDo #-}
import Control.Applicative.Backwards
import Control.Monad.Fix
instance MonadFix m => Monad (Backwards m) where
m >>= f = Backwards $
do
fin <- forwards (f int)
int <- forwards m
pure fin
Run Code Online (Sandbox Code Playgroud)
如果是这样,我还可以添加吗?
instance MonadFix m => MonadFix (Backwards m) where
mfix f = Backwards $ mfix (forwards . f)
Run Code Online (Sandbox Code Playgroud)