[Haskell-cafe] A question about mfix
Wei Hu
weihu at cs.virginia.edu
Tue Jul 29 21:28:06 EDT 2008
What's wrong about giving mfix the following general definition?
> mfix :: (a -> m a) -> m a
> mfix f = (mfix f) >>= f
I know it diverges if (>>=) is strict on the first argument. My
question is, is this definition correct for all lazy monads? The
documentation (http://haskell.org/ghc/docs/latest/html/libraries/base/
Control-Monad-Fix.html#v%3Amfix) says "mfix f executes the action f
only once, with the eventual output fed back as the input.". So my
definition looks like a valid one, doesn't it?
I haven't fully wrapped my head around this monadic fixed-point thing
yet. So, if you can give an example showing how my definition differs
from a standard monad, that'll be great.
More information about the Haskell-Cafe
mailing list