黑客有几个用于monad变压器的软件包:
- mtl:Monad变压器库
- 变压器:混凝土函子和单子变压器
- monads-fd:Monad类,使用函数依赖项
- monads-tf:Monad类,使用类型族
- monadLib:monad变压器的集合。
- mtl-tf:使用类型族的Monad转换器库。
- mmtl:模块化Monad变压器库
- mtlx:具有类型索引的Monad转换器库,提供“免费”副本。
- compose-trans:可组合的monad变压器
(也许我错过了一些)
我们应该使用哪一个?
mtl是Haskell平台中的mtl,但我一直在reddit上听到它很不酷的消息。
但是无论如何,选择有什么不好,这不是一件好事吗?
好吧,我看到例如数据访问器的作者必须如何做出所有这些选择以迎合流行的选择:
- data-accessor-monadLib库:monadLib的monad的访问器函数
- data-accessor-monads-fd库:使用访问器访问monads-fd State monad类中的状态
- data-accessor-monads-tf库:使用访问器访问monads-tf State monad类型族中的状态
- data-accessor-mtl库:使用访问器访问mtl State monad类中的状态
- data-accessor-transformers库:使用Accessor来访问变形金刚状态monad中的状态
我想如果继续进行下去,例如几个竞争的Arrow软件包不断发展,我们可能会看到类似的东西:spoonklink-arrows-transformers,spoonklink-arrows-monadLib,spoonklink-tfArrows-transformers,spoonklink-tfArrows-monadLib,...
然后,我担心如果spoonklink被派生了,黑客程序将耗尽磁盘空间。:)
问题:
- 为什么会有这么多的monad变压器套件?
- 为什么[考虑]不酷?
- 主要区别是什么?
- 这些看似竞争的软件包中的大多数由Andy Gill编写,由Ross Paterson维护。这是否意味着这些软件包没有竞争,而是以某种方式协同工作?Andy和Ross是否认为自己的任何软件包都已过时?
- 您和我应该使用哪一个?