このコードでは:
import System.Posix.Files
import Control.Exception
safeStat :: FilePath -> IO (Maybe FileStatus)
safeStat path =
handle (\_ -> return Nothing) (getFileStatus path >>= (return . Just))
このエラーが発生します(ghciで):
Ambiguous type variable `e0' in the constraint:
(Exception e0) arising from a use of `handle'
...
次のようなことを行うことで、エラーを取り除くことができます。
nothing :: IOException -> Maybe a
nothing _ = Nothing
safeStat :: FilePath -> IO (Maybe FileStatus)
safeStat path =
handle (return . nothing) (getFileStatus path >>= (return . Just))
どうしたの???ハンドラーが例外を処理することを望みます。