我有以下我经常做的样板,并且想消除。它看起来像这样:
type Configured = ReaderT Config
doSomething :: Configured IO Data
doSomething = do
getMeta <- asks getMetaData
meta <- liftIO getMeta
我想把它减少到这样的事情:
doSomething = do
meta <- find getMetaData
不幸的是,我还没有完全把注意力集中在 monad 转换器上。是什么类型的find
?是(Config -> IO Result) -> Result
吗?我该怎么写?
非常感谢任何帮助我 grok monad 转换器的提示/解释。
谢谢!