IO
在Haskell中很棘手。线程、FFI、异步异常、懒惰等等。
然后我们有了MonadIO
,它允许在底部使用IO
对一元堆栈进行分层。既然IO
操作可以做任意的事情,那么在这种不稳定的基础上构建一元堆栈有什么价值呢?
为什么它会存在?如果你真的需要执行任意的副作用,为什么不构建一个自定义的monad IO
呢?
发布于 2018-09-30 05:49:11
现在使用the ReaderT design pattern是一种常见的方法。
您对将其他转换器放在IO之上保持警惕是正确的,上面链接的博客文章解释了其中的一些原因。
然而,当涉及到将“公共应用程序配置”传递给所有函数时,ReaderT提供了一个很好的小便利。
https://stackoverflow.com/questions/52568702
复制相似问题