It's certainly myopic. I intended to improve real code contracts that I write.
So the sweet spot is saving 1 character
Well, I don't really care about saving characters at all. That's not the point. I'd accept this:
x ~impl~> y
You can quite easily write an extension method like:
Agreed, that's actually a really good point because in fact I don't care about short-circuiting in every scenario that I'd used it. Code contracts must be pure anyway.
The remaining problem is that everyone has to write their own
operator, and most people won't, so essentially nothing will change. Of course, I can write the operator for my own code, but then I'm doing something that just feels hacky and
should be a native C# feature.
Ultimately, the only really good argument against this feature is that its cost outweighs its benefits, but again that's a bit subjective. You perhaps don't use DbC and thus have little to no use for such an operator; however, I find myself wondering about
this feature all the time as I write code like
!x || y
strictly with the intention of meaning
x ~> y