I think I understand the case you're making - that generic solutions are generally preferable to special-case solutions. That's a sensible enough position to take.
But it's pretty unreasonable to call it _bad design_ in a vacuum, as if there are no obstacles to a more generic design. The reason something like do-notation wasn't chosen is that nobody figured out a way to implement it without major trade-offs. So the alternative you're championing here either isn't possible within the constraints of the language, or the solution hasn't been discovered yet. The `?` operator was a pragmatic compromise.
I'm with you 100% that it is a shortcoming, but you can't really call it bad design given the reality of the situation. Compromises aren't bad design.
Not all for-profit websites are run by big corporations. The companies you're describing here are also the ones that will find it easiest to comply with these new regulations. YouTube for example was already pressured to create a filtering system, ContentID. Behemoths like Facebook will have a far easier time adapting than your typical startup.
Article 13 dooms smaller companies and startups, thus further entrenching these big corporations. There was a provision added to Article 13 to protect "small and medium-sized enterprises", but according to the EFF [0] this "protection" is fatally flawed. It only protects them for 3 years, or until they attain 5 million unique visitors, or until they attain annual revenues (not profits) of €10 million.
That's not to mention that the exceptions for not-for-profit services also has been regarded as vague, which could be problematic.
But it's pretty unreasonable to call it _bad design_ in a vacuum, as if there are no obstacles to a more generic design. The reason something like do-notation wasn't chosen is that nobody figured out a way to implement it without major trade-offs. So the alternative you're championing here either isn't possible within the constraints of the language, or the solution hasn't been discovered yet. The `?` operator was a pragmatic compromise.
I'm with you 100% that it is a shortcoming, but you can't really call it bad design given the reality of the situation. Compromises aren't bad design.