提升此单子以获取读者的数据

问题描述 投票:0回答:1

我有这个单子:

newtype App a = App { runApp :: ExceptT ServerError (LoggingT (ReaderT AppConfig Handler)) a }
  deriving (Functor, Applicative, Monad, MonadReader AppConfig, MonadError ServerError, MonadIO, MonadLogger) via (ExceptT ServerError (LoggingT (ReaderT AppConfig Handler)))

我以为我可以通过这个提升到达Reader中的AppConfig

lift . lift ask

但它不起作用。 您能帮助我如何访问此功能和 AppConfig 数据吗?

提前致谢!

我尝试使用

获取AppConfig数据
lift . lift ask
haskell
1个回答
0
投票

忽略特定的 monad 转换器,您可以在 GHCi 中看到您希望将 lift . lift

composition
应用于
ask
,而不是
lift
应用于
lift ask
的结果:

> :t lift . lift ask
[type error redacted]

> :t lift . lift $ ask
lift . lift $ ask
  :: (MonadTrans t1, MonadTrans t2, Monad m,
      Monad (t2 (ReaderT a m))) =>
     t1 (t2 (ReaderT a m)) a

替换

t1 ~ ExceptT ServerError
t2 ~ LoggigT
a ~ AppConfig
m ~  Handler

© www.soinside.com 2019 - 2024. All rights reserved.