> Are you really asking why someone would find themselves needing to tweak the edge case semantics of a widely used function in a large project?
If you do this and breaks the assumptions of the interface, it’s just recklessness. You don’t go and tweak functions without fully understanding the rules it established and how those rules are treated as axioms somewhere else.
> But notably compile time static type checking greatly reduces the risks involved
This is usually an excuse to not fully check the assumptions in a given piece of code. Like tbe warnings will be enough to take care of any issues. Type checking is not software correctness. I’ve seen badly defined type, type erasures, and various other issues that negated any value brought by the type system.
Are you really asking why someone would find themselves needing to tweak the edge case semantics of a widely used function in a large project?
> needs to be written and modified carefully.
But notably compile time static type checking greatly reduces the risks involved. That's all I was trying to say.