int difference(uint a, uint b) {
   if (a >= b) {
     return cast(int) a-b;
   }
   else {
     return -(cast(int) b-a);
   }
}

Wouldn't this be just pushing a design error one step further?
uint has no mathematical basis whatsoever, it is there because we "can" have it. I have another solution, remove "uint-uint" from the language and provide explicit functions.

Reply via email to