3 ms·
This is neat, but you don’t need a new language to leverage these concepts. https://effect.website/ https://effect.website/ The effect library brings all of thi
by evelant 1y ago
This is neat, but you don’t need a new language to leverage these concepts. https://effect.website/ https://effect.website/ The effect library brings all of this goodness to typescript (and then some) and is robust and production ready. I hate writing typescript without it these days.
- chamomeal 1y agoI’ve heard that using effect in TS almost like using another language. Like it’s “all or nothing”, either your whole program is using effect or it’s not. But obvi you can still use all of typescript’s features and ecosystem. Do you also feel like effect is “or or nothing”? Or could you enclose certain parts of a program into effect parts?
- evelant 1y agoYou can definitely only write parts of your app in effect. That’s what I do and it works great. Just be mindful about where you want that boundary between effect and non effect parts to be and it’s easy. The effect parts end up so much more maintainable and robust.
- iamwil 1y agoIt's mistaken that you don't need a new language to implement full-blown algebraic effects. Full-blown algebraic effects are multi-shot, meaning that you can "resume the thrown exception" multiple times. The only way to do that is through delimited continuations, which isn't available as a feature in most languages, and can't be emulated by other language features--unless you reimplement the call stack in userland. In addition, the handler can decide not to resume a raised effect at all, at which point it can exit. When it does, it's as if all the computation that it did when the handler wrapped the computation didn't happen at all. It's a way of doing backtracking. This is also possible due to delimited continuations. Both are things that you can't do in the effects library.