I don't think so because the result of calling an allocator is either you got memory or you don’t, while the IO here will be “it depends”

I don't get it, what's the difference between "got or don't" vs "it depends"?

The allocator’s output is only two: either you get memory or you don’t. To quote GP

> Every function with an IO interface cannot be reasoned about locally because of unexpected interactions with the io parameter input

This means with IO interface is not quiet clear what WILL happen so it “depends”