Por que o `mfix` não é total no` MaybeT`
oimplementação de transformadores doMonadFix
paraMaybeT
falhará se a função for avaliada comoNothing
. Porque éNothing
não se propagandomfix
?
mfix' :: MonadFix m => (a -> MaybeT m a) -> MaybeT m a
mfix' f = MaybeT $ mfix $ \case
Nothing -> return Nothing
Just x -> runMaybeT $ f x
Deve haver uma boa razão que eu não vejo porqueListT
não implementaMonadFix
de todo eMaybe
implementado mesmo jeito como acima.