while¶
Evaluate expression/s while some condition remains true
while[test;e1;e2;e3;…;en]
Control construct. Where
testis an expression that evaluates to an atom of integral typee1,e2, …enare expressions
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.
while is not a function but a control construct. It cannot be iterated or projected.
Name scope¶
The brackets of the expression list do not create lexical scope. Name scope within the brackets is the same as outside them.
Accumulators – While,
do,
if
Controlling evaluation
Q for Mortals
§10.1.6 while