On Mon, Mar 14, 2011 at 3:34 AM, Robert O'Boyle <[email protected]> wrote: > (TEST"0 i.10) "0 i.5
This doesn't work because (TEST"0 i.10) is a noun, so the outer call to rank will just replicate that array. If you want to repeat an operation multiple times, you need to apply rank to a verb. r=:0 ([: TEST"0 (i.10)"_) "0 i.5 0 1 3 6 10 15 21 28 36 45 45 46 48 51 55 60 66 73 81 90 90 91 93 96 100 105 111 118 126 135 135 136 138 141 145 150 156 163 171 180 180 181 183 186 190 195 201 208 216 225 Of course, in this case you could just do something like this, TEST"0] 5$,:i.10 Alternately you could use explicit for. loops. 3 :0] 0 r =: 0 os =. i. 0 0 for_is. i. 5 do. ot =. $ 0 for_it. i. 10 do. ot =. ot , TEST it end. os =. os , ot end. os ) 0 1 3 6 10 15 21 28 36 45 45 46 48 51 55 60 66 73 81 90 90 91 93 96 100 105 111 118 126 135 135 136 138 141 145 150 156 163 171 180 180 181 183 186 190 195 201 208 216 225 (For loops could have the advantage that I think jsoftware has made some vague statements on the mailing lists that if you use the rank operator on verbs with side effects, it might not always call the verb as many times or in the right order in some case of optimizations in future versions. This is belivable because (u/\. y) already does such an optimization, and in fact I think that's a right idea.) -- Ambrus ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
