4 ms·
> An function with an effect (in this sense) is a function which can ask a handler to `perform` some effect for it. Why does it need to ask a "handler" to do s
by galaxyLogic 3y ago
> An function with an effect (in this sense) is a function which can ask a handler to `perform` some effect for it.
Why does it need to ask a "handler" to do something, why can't it just call a function that does the "action" for it?
- mrkeen 3y agoBy making effects explicit, you reap the benefit of being able to write non-effectful code. Depending on what your language tracked as an effect, you could make your business-logic always terminate, or perform no allocations, if you had effects for Mutation/GeneralRecursion/Allocation. But no, I certainly don't understand the function->handler control flow here. It has to be handler->function, otherwise you've got two handlers!
- reuben364 3y agoa function will return to it's call site (or diverge), a handler doesn't necessarily have to resume from where it was invoked. There is also (sort of) dynamic scoping, where you don't have to thread the handlers through calls.