私はアクションの実行を強制的に強制して、IO
アクションを得なければならない場所で、Control.Monad.Exceptを使用しています。なぜこれが必要なのか疑問に思っているのは、実行する必要のあるライブラリ関数がIOアクションのみを受け入れるためです。この場合は、Database.PostgreSQL.Simple.withTransaction :: Connection -> IO a -> IO a
"IO(いずれかのea)をExceptTエマに変換する方法
次のものに相当します:
type AppM = ExceptT AppError (ReaderT Env (LoggingT IO))
runAppM :: Env -> AppM a -> a
withTransaction :: AppM a -> AppM a
withTransaction appm = do
conn <- getDbConnection
env <- getEnv
liftIO $ PGS.withTransaction conn $ runAppM appm
ここにあります私は取得していますエラー:
Excepted type: ExceptT AppError (ReadertT Env (LoggingT IO)) a
Actual type: ExceptT AppError (ReadertT Env (LoggingT IO)) (Either AppError a)
あなたの質問のタイトルと本文を使用します。 –