yai*_*chu 84 monads haskell monad-transformers
Hackage有几个monad变换器包:
(也许我错过了一些)
我们应该使用哪一个?
mtl是Haskell平台中的一个,但我一直听说reddit它是不酷的.
但无论如何,选择有什么不好,这不是一件好事吗?
好吧,我看到数据访问器的作者如何必须使所有这些满足流行的选择:
我想如果这种情况继续下去,例如几个竞争的箭头包演变,我们可能会看到类似:spoonklink-arrows-transformers,spoonklink-arrows-monadLib,spoonklink-tfArrows-transformers,spoonklink-tfArrows-monadLib,...
然后我担心如果spoonklink被分叉,Hackage将耗尽磁盘空间.:)
问题:
C. *_*ann 65
其中一堆几乎完全等同:
mtl使用GHC扩展,但是transformers是Haskell 98.monads-fd并且monads-tf分别是transformers使用功能依赖项和类型系列的附加组件,两者都提供了mtl缺少的功能transformers.mtl-tf是mtl使用类型的家庭重新实现.基本上,mtl== transformers++ monads-fd,mtl-tf== transformers++ monads-tf.我认为,改进的便携性和模块化transformers及其相关的包装是mtl我们现在这样做的原因.
mmtl并且mtlx两者似乎都mtl与API差异和额外功能类似和/或基于它们.
MonadLib似乎对事情有不同的看法,但我并不直接熟悉它.似乎也使用了很多GHC扩展,比其他扩展更多.
乍一看compose-trans似乎更像是元编程创建monad变换器的东西.它声称与Control.Monad.Trans哪个兼容...我的意思是mtl?
无论如何,我建议采用以下决策算法:
transformers&co.,帮助我们mtl休息.mtl在大型项目中使用了吗?transformers并不完全兼容,但没有人会因为没有切换而杀了你.category-extras通过一页半Edw*_*ETT 20
目前?你可能应该使用mtl.正在发生的事情是,transformers库被分解出来的母语在时尚monads-fd和monads-tf能够和平共处,但最后的支票,还没有的情况.
当发生这种情况时,你将能够导入monads-fd并transformers获得(几乎)相同的接口,除了State等等将是别名StateT.
所以我写信mtl,但不依赖于State,Reader等目前正在data用types 代替的事实.
MonadLib 是Iavor一直在努力的另一种选择,可以安全使用,因为它不与其他模块共享任何模块名称,但具有相当不同的使用模式.
| 归档时间: |
|
| 查看次数: |
6374 次 |
| 最近记录: |