Библиотека extensible effects и библиотека layers, по-видимому, имеют одинаковые цели (что делает ее легко создавать разные эффекты вместе). Оба говорят о преимуществах, которые они предлагают над mtl, но не ссылаются на другие. Могут ли оба сделать то же самое? Включает ли кто-нибудь другого? Есть ли у каждой функция, которой не хватает другой?
Каковы различия между слоями и расширяемыми эффектами?
Ответ 1
Пока я ни с кем не сталкивался ни с одним из них, это довольно неудобно из статей.
Хотя layers скорее строятся на MTL, exteff - совершенно другой подход. exteff определяет одну монаду, которая содержит информацию о ее эффектах в своем типе. exteff утверждает, что решает проблему упорядочения монады, т.е. если монады A и B взаимозаменяемы, классический подход сделает типы A (B a) и B (A a) разными. В exteff они одинаковы.
Из interface layers кажется, что это не решило эту проблему.
Ответ 2
добавление к ответам полковников, extensible-effects являются первоначально закодированными эффектами, а эффекты в layers (и mtl) окончательно кодируются. оба подхода имеют преимущества и недостатки, а в некоторых сценариях лучше или хуже.