Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> 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?



By 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!


a 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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: