Reader and MonadReader



为什么在Control.Monad.Reader中有Reader monad和MonadReader monad ?包文档讨论了Reader monad,然后直接进入MonadReader文档,没有任何解释。这些单子之间的区别是什么?阅读这些参考资料页让我感到非常困惑。有趣的是,Haskell维基书的Reader单子页面还没有写出来!

没有MonadReader单子。这是monad的,即那些可以用作 Reader的monad(通常,因为它们被定义为在某处具有ReaderT的monad变压器堆栈)。

  • Reader作为读取器的特定单子,因为它的ReaderT仅适用于平凡的身份单子:

    type Reader r = ReaderT r Identity
    

    它显然是MonadReader的一个实例,但不做任何其他事情。

  • MonadReader是可以从某些环境中读取的所有单子的类。同样,这包括Reader本身,也包括MaybeT (ReaderT Int (ListT IO))

相关内容

  • 没有找到相关文章

最新更新