【问题标题】:Monad transformers libraries - which one to use? [closed]Monad 转换器库 - 使用哪一个? [关闭]
【发布时间】:2011-08-13 09:59:32
【问题描述】:

Hackage 上有许多不同的 monad 转换器库。一些似乎比其他人更受关注。仅举几例:mtl(由于某种原因,当前版本取决于转换器)、转换器、monadLib、monads-tf、mtlx、contstuff。

应该首选哪一个,为什么?它们的独特之处是什么?性能怎么样?

【问题讨论】:

  • 回答一个小问题:我相信mtl 正在逐步淘汰,取而代之的是transformers。此过程中的当前步骤是用围绕transformers 的薄包装器替换它,因此存在依赖关系。
  • @camccann: mtl 提供比transformers 更多的功能,相当于transformers+monads-fd(现已弃用)。 transformers 在 Haskell-98 包中提供了尽可能多的功能,mtl 提供了额外的功能(主要是更多实例),如果需要,也可以使用其他包(例如monads-tf)。
  • 这个链接帮助我了解了 mtl 与变形金刚 haskell.org/haskellwiki/Monad_Transformer_Library
  • 该死的有趣,有用的问题...

标签: haskell functional-programming monads monad-transformers


【解决方案1】:

Haskell Platformmtltransformers 指定为标准。

如果你不确定,你应该使用mtl

但是,如果您有特定的技术原因来查看新库,它们往往会解决问题或向 mtl 添加新功能。 monadLib 尤其具有一些新功能。

【讨论】:

  • 惠普选择 mtl 的理由是什么?
  • 它是最古老、使用最广泛、最易理解的 monad 库。
  • ...其中,going by Hackage dependencies,“使用最广泛”的意思是“比 transformers 之外的所有其他组合都高出一个数量级”。
  • 此外,当前的 mtl 实际上是重命名的 monads-fd 包。它在很大程度上与旧的 mtl 兼容,同时避免了一些重复。 (例如,State 是 StateT 的别名),它建立在 transformers 包之上,为那些不想或不能跳出较小语言的人提供了一个较小的 Haskell 98 内核。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 2021-03-04
  • 2012-04-09
  • 2018-02-06
  • 2021-11-27
  • 2013-04-29
相关资源
最近更新 更多