Yes, I'm happy with this design decision. The only bummer is that it doesn't allow daisy-chaining, as in:
img = img.resize(...).blur(....).hflip() img = img.resize(...).blur(....).hflip()That said, I don't claim to be a clever man.
BTW, as an addition to my original comment, a good example of reinventing types are the litany of C++ libraries that do NOT use the STL but reinvent half of it.
img = ...
img.resize(...)
img.blur(....)
img.hflip()I think this is an edge case that is always going to feel inelegant, so whatever makes it easiest to load into my head wins out.