小编ect*_*der的帖子

如何不将实例约束应用于使用通用函数的受限函数?

假设我有一个函数:

logResult :: (MonadIO m, ToJSON a) => Either MyError (Response a) -> m ()
logResult = ...
Run Code Online (Sandbox Code Playgroud)

在此功能中,如果得到:

  1. Right (Response a)-我打电话toJSON记录结果。
  2. 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)

haskell typeclass

10
推荐指数
1
解决办法
89
查看次数

3
推荐指数
1
解决办法
333
查看次数

标签 统计

cron ×1

haskell ×1

hasura ×1

kubernetes ×1

typeclass ×1