Haskell 98 (Library) Report: contradiction about fail :: String -> IO a