首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mtl,互感器,monads,monadLib和选择的悖论

mtl,互感器,monads,monadLib和选择的悖论
EN

Stack Overflow用户
提问于 2010-05-04 22:51:29
回答 2查看 7.7K关注 0票数 96

Hackage有几个用于单台变压器的包:

  • mtl:Monad变压器库
  • 变压器:混凝土函子和单片变压器
  • monads:Monad类,使用函数依赖项
  • 单子-tf:Monad类,使用类型族
  • monadLib:一组单台变压器。
  • mtl-tf:使用类型族的Monad变压器库。
  • 美特:模块化Monad变压器库
  • mtlx:带有类型索引的Monad转换器库,提供“免费”副本。
  • 组成-反式:可组合的单片变压器

(也许我漏掉了一些)

我们该用哪一种?

mtl是Haskell平台上的一个,但我经常在reddit上听到它不酷。

但选择有什么坏处,不是好事吗?

嗯,我看到了,例如,数据访问器的作者必须做出所有这些来迎合流行的选择:

  • 数据访问器-monadLib库:monadLib的访问函数
  • 数据访问器-monads库:使用访问器访问monads状态monad类中的状态。
  • 数据访问器-monads库:使用访问器访问monads状态单类家族中的状态。
  • 数据访问器- mtl库:使用访问器访问mtl状态单类中的状态。
  • 数据访问器-变压器库:使用访问器访问变压器状态单

我设想,如果这种情况持续下去,例如几个竞争的箭包的发展,我们可能会看到这样的东西:勺子链接箭头-变压器,勺子链接-箭头-monadLib,勺子链接-tfArrows变压器,勺子链接-tfArrows monadLib,

然后,我担心如果spoonklink被分叉,黑客将耗尽磁盘空间。:)

问题:

  • 为什么有这么多单台变压器包?
  • 为什么mtl被认为不酷?
  • 主要的区别是什么?
  • 这些看似相互竞争的软件包大多是由Andy编写的,并由Ross维护。这是否意味着这些软件包不是在竞争,而是以某种方式协同工作呢?安迪和罗斯是否认为他们自己的套餐是过时的?
  • 你和我该用哪一种?
EN

回答 2

Stack Overflow用户

发布于 2010-05-05 00:28:46

暂时的?您可能应该使用mtl。正在发生的情况是,transformers库正在以一种monads-fdmonads-tf可以和平共处的方式从MTL中分离出来,但最终检查的结果还不是这样。

当发生这种情况时,您将能够导入monads-fdtransformers,并获得(几乎)相同的接口,但State等将是StateT的别名。

因此,我会写信给mtl,但不依赖这样一个事实,即State等目前是data,因为它们将被types所取代。

MonadLib是Iavor一直在使用的另一种选择,它可以安全地使用,因为它不与其他模块共享任何模块名称,但是它有一个完全不同的使用模式。

票数 20
EN

Stack Overflow用户

发布于 2017-03-04 23:48:51

他的回答中提到的Edward提到的保理于2010年底完成。它的最终结果是建立在变压器上的monads,成为mtl的第2版。由于mtl的广泛性,monads从来没有真正流行过。截至2017年初,mtl和变压器是唯一被广泛使用的单台变压器库。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2769487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档