Haskell 哈斯凯尔的作家vs作家
Haskell中的Haskell 哈斯凯尔的作家vs作家,haskell,monads,Haskell,Monads,Haskell中的Writer和WriterT有什么区别?一个比另一个好吗?区别在于Writer是一个单子,而WriterT是一个单子,也就是说,你给它一些基本的单子,它给你一个新的单子,上面有“Writer”功能。如果您只需要特定于编写器的功能,请使用writer。如果您需要将其效果与一些其他monad(如IO)结合起来,请使用WriterT来补充上述出色的解释,我还想指出本文。对我帮助很大: 还请注意,Writer是通过WriterT定义的。更准确地说,我们有类型编写器w=WriterT w
Writer
和WriterT
有什么区别?一个比另一个好吗?区别在于Writer
是一个单子,而WriterT
是一个单子,也就是说,你给它一些基本的单子,它给你一个新的单子,上面有“Writer”功能。如果您只需要特定于编写器的功能,请使用writer
。如果您需要将其效果与一些其他monad(如IO
)结合起来,请使用WriterT
来补充上述出色的解释,我还想指出本文。对我帮助很大:
还请注意,
Writer
是通过WriterT
定义的。更准确地说,我们有类型编写器w=WriterT w Identity
。这里的Identity
是一个无效的单子。也就是说,我们给WriterT
一个单子,却没有效果,然后得到Writer
monad。我一直无法找到可视化monad
堆栈的方法。在这里,您说writer功能位于顶部,但要访问下面的Monad
,您可以使用lift
,这使我将writer视为位于底部。@帕特:我认为,您将较低的Monad提升到与writer相同的级别。这个链接发生在404,这里有一个新的链接,供那些像我一样偶然发现这一点的人使用: