extensible effects库和layers库似乎具有相同的目标(使轻松组合不同的效果很容易)。
双方都在谈论他们提供的优于mtl的优势,但都没有提及彼此。两者都能完成同一件事吗?一个包含另一个吗?每个人都有其他人缺乏的某些功能吗?
最佳答案
尽管我对这些都不了解,但它与the articles相比非常简单。
尽管layers
完全基于MTL构建,但exteff
是一种完全不同的方法。 exteff
定义一个monad,该monad包含有关其类型的效果的信息。 exteff
声称可以解决monad排序的问题,即,如果monad A和B可互换,则经典方法会使A (B a)
和B (A a)
具有不同的类型。在exteff
中,它们是相同的。
从layers
的interface看来,它并不能解决该问题。