假设我有一个函数:
logResult :: (MonadIO m, ToJSON a) => Either MyError (Response a) -> m ()
logResult = ...
Run Code Online (Sandbox Code Playgroud)
在此功能中,如果得到:
Right (Response a)-我打电话toJSON记录结果。Left MyError-我也记录了。MyError已经ToJSON定义了一个实例。现在,我想编写一个辅助函数:
logError :: (MonadIO m) :: MyError -> m ()
logError err = logResult (Left err)
Run Code Online (Sandbox Code Playgroud)
但是GHC抱怨以下几方面:
• Could not deduce (ToJSON a0) arising from a use of ‘logResult’
from the context: MonadIO m
bound by the type signature for:
logError :: forall (m :: * -> *). …Run Code Online (Sandbox Code Playgroud)