I mean, at least unary - often has a direct counterpart in instruction sets, i.e. CPUs seem to generally have a dedicated negation instruction[1]. Not that it’s a super strong argument, but it’s something.
Also, obvious does heavy lifting in the zen – yes, Zig does provide multiple ways to do things (try vs catch |e| return e; .? vs orelse unreachable; const a = T{}; vs const a: T = .{}[2]), but the emphasis is on having the preferred alternatives be as obvious as possible. I’d argue that the obvious way to do nothing is exclusively writing nothing, while the obvious way to negate is (at least to me) to use a unary -.
Though, admittedly, I just looked in the ARMv7 reference that I have handy and while there is a dedicated NEG instruction described, they state that it is a pre-UAL synonym for RSB with an immediate value of 0, which is in a sense exactly what you describe. ↩︎