I'm a developer of polysemy, and I've recently been working away on a new effect system to address the problems of polysemy's core abstractions. I've just released that library: in-other-words.
The main contribution of in-other-words is its new approach to higher-order effects, which lets it solve the O(n^2) instances problem without restricting what effects may be represented, unlike the mechanism underlying polysemy and fused-effects (that is, weave).
The drawback with this approach is that it introduces additional complexity; effect interpreters may restrict what other effect interpreters may be used in the same program. This is unavoidable: you can't have every possible effect play nicely together with every other effect. The differences are that while polysemy and fused-effects solve that through placing uniform restrictions that every effect and effect interpreter must adhere to, in-other-words's restrictions aren't static, but are rather introduced by the interpreters you use.
Despite that, I feel that the approach is a very big improvement over weave. In addition, the core idea is generalizable, so it can be adapted for use by other effect systems.
I'm a developer of
polysemy
, and I've recently been working away on a new effect system to address the problems ofpolysemy
's core abstractions. I've just released that library:in-other-words
.there goes my weekend!
The main contribution of
in-other-words
is its new approach to higher-order effects, which lets it solve the O(n^2) instances problem without restricting what effects may be represented, unlike the mechanism underlyingpolysemy
andfused-effects
(that is,weave
).The drawback with this approach is that it introduces additional complexity; effect interpreters may restrict what other effect interpreters may be used in the same program. This is unavoidable: you can't have every possible effect play nicely together with every other effect. The differences are that while
polysemy
andfused-effects
solve that through placing uniform restrictions that every effect and effect interpreter must adhere to,in-other-words
's restrictions aren't static, but are rather introduced by the interpreters you use.Despite that, I feel that the approach is a very big improvement over
weave
. In addition, the core idea is generalizable, so it can be adapted for use by other effect systems.wonderful
Nice!
(deleted)