The System.IO docs contains a mysterious, undocumented function fixIO. Its source only adds to the mystery:
fixIO
fixIO :: (a -> IO a) -> IO a fixIO
fixIO is the witness to the MonadFix IO instance. See the HaskellWiki page on MonadFix and the paper A Recursive do for Haskell.