# Why is this an infinite loop? [closed]

The following minimal non working example is an infinite loop: why is it so?

list={1};
n=2;
While[Last@list<10,Append[list,n];n++]


It seems that Append does not append the last value to list so While is always True, but why is it so?

• You're confusing Append and AppendTo. Please look them up. – Szabolcs Jul 29 '18 at 8:36
• @Szabolcs would you object to me re-marking this as a duplicate of (112183)? – Mr.Wizard Jul 29 '18 at 14:41

The loop is infinite, because the result of Append is the new list, not the modification of existing.

Documentation:

Append[expr,elem]
gives expr with elem appended.


And:

AppendTo[s,elem]
appends elem to the value of s, and resets s to the result.


So, you either need to reassign the value of Append or use AppendTo:

list={1};
n=2;
While[Last@list<10,list=Append[list,n];n++]


Or:

list={1};
n=2;
While[Last@list<10,AppendTo[list,n];n++]


Both will yield the same result.