#N canvas 678 0 632 661 10; #X obj 98 184 display; #X obj 29 252 display; #X text 26 38 Treats the grid as a grid of one- dimensional grids such that the same operation (here addition) will be performed on all its elements together with the base value. the results are combined back. each #fold operation removes a dimension. syntax: #fold ; #X obj 143 249 #to_float; #X obj 143 274 print values; #X text 6 721 some other forms:; #X obj 140 722 #fold *; #X obj 17 695 #fold + \, seed 0; #X obj 211 722 #fold ^; #X obj 284 722 #fold &; #X obj 355 722 #fold |; #N canvas 0 0 500 313 more 1; #X obj 98 82 display; #X obj 28 48 #import (2 2 2); #X obj 29 170 display; #X msg 28 27 1 3 1 3 1 3 1 5; #X text 154 24 <-- clicking here creates a grid through [#import]; #X obj 122 170 #to_float; #X obj 122 195 print values; #X obj 28 137 #fold + \, seed (0 0); #X connect 1 0 0 0; #X connect 1 0 7 0; #X connect 3 0 1 0; #X connect 5 0 6 0; #X connect 7 0 2 0; #X connect 7 0 5 0; #X restore 160 694 pd more info; #X msg 28 129 1 3 1 3 1 3 1 3 1 3 1 5; #X obj 28 153 #import (2 3 2); #X obj 28 224 #fold +; #X text 203 129 <-- clicking here creates a grid through [#import] ; #X obj 3 324 doc_c 1; #X obj 3 386 doc_i 1; #X obj 3 570 doc_o 1; #X obj 0 0 doc_h; #X obj 14 600 doc_oo 0; #X obj 14 416 doc_ii 0; #X obj 14 354 doc_cc 0; #X text 219 155 [#fold +] computes totals; #X text 221 176 [#fold inv+] is an alternated sum (+/-); #X text 225 203 [#fold *] can compute the size of a grid using its dimension list; #X text 229 240 [#fold &] can mean "for all"; #X text 228 260 [#fold |] can mean "there exists (at least one)"; #X text 224 282 [#fold ^] can mean "there exists an odd number of..." ; #X obj 97 354 doc_m c0 symbol/numop; #X text 232 354 the operator to fold with.; #X obj 97 416 doc_m i0 grid; #X obj 97 477 doc_m i0 op; #X obj 97 499 doc_m i0 seed; #X text 232 477 same as arg 0; #X text 232 416 replaces every subgrid by the result of a cascade on that subgrid. Doing that with seed value 0 and operation + on grid "2 3 5 7" will compute ((((0+2)+3)+5)+7) find the total "17".; #X text 232 499 the initial value for the folding. (default: whatever does nothing for the chosen op \; e.g. 0 + \, 0 - \, 1 * \, ...). this can be a grid of any size \, and this decides the size of the subgrids we are working on.; #X obj 97 600 doc_m o0 grid; #X text 232 600 Outputs a grid that has one less dimension than the input.; #X obj 0 632 doc_f; #X connect 3 0 4 0; #X connect 12 0 13 0; #X connect 13 0 0 0; #X connect 13 0 14 0; #X connect 14 0 1 0; #X connect 14 0 3 0; #X connect 29 1 30 0; #X connect 31 1 35 0; #X connect 32 1 34 0; #X connect 33 1 36 0; #X connect 37 1 38 0;