我剛纔問這個在Haskell的咖啡廳,但我想我還不如問過這裏。以下Monad
實例對於Backwards m
有效嗎?向後承認Monad實例嗎?
{-# 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
如果是這樣,我還可以加這個嗎?
instance MonadFix m => MonadFix (Backwards m) where
mfix f = Backwards $ mfix (forwards . f)
是的,我知道這個限制,這大大限制了實例的效用。我還不清楚這個限制是否影響其有效性*。 – dfeuer
好吧,我想我現在看到這是如何破壞的。我發佈了一個我懷疑證明的答案。 – dfeuer
我聽說GHC 8.0會支持'IO'的時間旅行。 – PyRulez