I mean, shouldn't there be a guard? [...]
In general, I'm heavily opposed against any change which can introduce subtle changes in the semantics without any warning/compilation error. Consider e.g. length (readsPrec 1 "2 % 0" :: [(Rational, String)]). Currently, this returns 1, which will silently turn into 0 with your proposed change, at least if I see this correctly. Therefore: -100 for this proposal. :-}