The mechanism should be made clear in the introduction as browsing the documentation doesn't make it clear to me.
The mechanism should be made clear in the introduction as browsing the documentation doesn't make it clear to me.
The specific design is still in question though. For one, an effect like Allocate will be almost ubiquitous throughout each function so care is needed to not clog up signatures too much. There's a few potential solutions here if you're interested. From including Allocate within the row-type of a larger effect like `IO = can Allocate, Read, Write, ...` to encouraging effect inference on functions versus manual annotation.
The author said somewhere else in the thread they want to switch to generators implemented with effects eventually.
However for things like "sorting" this can never fully be achieved. You cannot sort a generator. Every iterator counterpart needs a list counterpart or there will be literally certain computations that are impossible.