jesseduffield/OK

x = x + 1 is confusing and obviously wrong

FlorentBecker opened this issue · 1 comments

Assignments where a given variable appears both on the left and right of the = are confusing and wrong. Take x = x + 1, there is no value of x such the equality holds. The mathematically correct thing to do in such a case is to set x to NO!. More generally, any assignment where the same variable appears on both sides should set all involved variables to NO!.

Incrementing x then looks like:

// The Value Formerly Known As
let tvfka = fn(a) {
  return a;
}

x = 42;
old_x = tvfka(x);
x = old_x + 1;

An exception should be made for assignments where the left and right side are the same. For example,

x = x; // no problem
x = x + 1; // NO!