Early APL implementations (circa 1970 or so) had no programming loop-flow control structures, such as codice_1 or codice_2 loops, and codice_3 constructs. Instead, they used array operations, and use of structured programming constructs was often not necessary, since an operation could be performed on a full array in one statement. For example, the codice_4 function (codice_5) can replace for-loop iteration: ιN when applied to a scalar positive integer yields a one-dimensional array (vector), 1 2 3 ... N. More recent implementations of APL generally include comprehensive control structures, so that data structure and program control flow can be clearly and cleanly separated.