mtl,变形金刚,monads-fd,monadLib和选择的悖论 [英] mtl, transformers, monads-fd, monadLib, and the paradox of choice

查看:91
本文介绍了mtl,变形金刚,monads-fd,monadLib和选择的悖论的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hackage提供了一些monad变换器的软件包:



(也许我错过了一些)

我们应该使用哪一个?



mtl是Haskell Platform中的一个,但我一直听到reddit的说法,它并不冷酷。



但是选择有什么不好,是不是只是一件好事?

好吧,我看到了例如数据访问器的作者必须使所有这些才能迎合流行的选择:
$ b


  • data-accessor-monadLib库:monadLib monads的访问器函数
  • >
  • data-accessor-monads-fd库:使用Accessor访问monads-fd中的状态monad class

  • data-accessor-monads-tf libr ary:使用访问器访问monads-tf状态monad类型的状态
  • data-accessor-mtl library:使用访问器访问mtl状态monad类中的状态
  • data-accessor-transformers library:使用Accessor访问变换器状态monad



我想象如果这样继续并且例如几个竞争性的箭头包发展,我们可能会看到类似:spoonklink-arrows-transformers,spoonklink-arrows-monadLib,spoonklink-tfArrows-transformers,spoonklink-tfArrows-monadLib,...



然后我担心如果spoonklink被分叉,Hackage将用完磁盘空间。 :)

问题:


  • 为什么会有这么多monad变压器包?

  • 为什么mtl [认为]不酷?


  • 这些关键区别有哪些?看似相互竞争的软件包由Andy Gill编写,由Ross Paterson维护。这是否意味着这些软件包没有竞争,而是以某种方式一起工作?安迪和罗斯认为他们自己的软件包是否已过时?

  • 您和我使用哪一种?


<




  • <$ c解析方案

$ c> mtl 使用GHC扩展,但是变换器是Haskell 98.

  • monads-fd monads-tf 是附加到变形金刚依赖项和类型族,它们都提供 mtl 中缺少变形金刚的功能。

  • mtl-tf 是使用类型系列重新实现的 mtl
  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆