Evaluate expression/s while some condition remains true

Syntax: while[test;e1;e2;e3;…;en]

Control construct. Where

unless test evaluates to zero, the expressions e1 to en are evaluated, in order. The cycle – evaluate test, then the expressions – continues until test evaluates to zero.

q)r:1 1
q)x:10
q)while[x-:1;r,:sum -2#r]
q)r
1 1 2 3 5 8 13 21 34 55 89

The result of while is always the generic null.