#N canvas 424 89 624 640 10; #X msg 119 113 1 2 3 4 a b c; #X text 251 117 <- click to test; #X obj 196 386 list; #X obj 77 499 list; #X obj 100 271 route float; #X obj 100 385 list prepend; #X floatatom 248 273 5 0 0 0 - - -; #N canvas 0 0 533 407 drip 0; #X obj 64 206 list split 1; #X obj 64 123 until; #X obj 64 181 list append; #X obj 194 206 bang; #X text 146 90 First store list \, then start the loop; #X text 163 118 "until" bangs its output until told to stop by a "bang" to its right inlet.; #X text 182 160 Store the remaining list.; #X text 239 205 third outlet of "split" tells us to stop.; #X obj 64 243 outlet; #X obj 64 57 inlet; #X obj 64 86 t b l; #X text 237 44 From list-help.pd; #X connect 0 0 8 0; #X connect 0 1 2 1; #X connect 0 2 3 0; #X connect 1 0 2 0; #X connect 2 0 0 0; #X connect 3 0 1 1; #X connect 9 0 10 0; #X connect 10 0 1 0; #X connect 10 1 2 1; #X restore 100 242 pd drip; #X obj 78 150 t b a b; #X text 254 314 Do math only on float elements; #X obj 122 178 s \$0-reset-result; #X obj 179 357 r \$0-reset-result; #X text 260 177 clear result list; #X text 175 242 "Drip" (serialize) the list; #X text 258 389 Repack the list (think of the counter); #X text 124 496 Final result is built here; #X obj 78 81 inlet; #X obj 100 307 expr $f1 \$1 $f2; #X obj 200 273 inlet; #X obj 77 530 outlet; #X text 182 32 Use as "list-math operator" where operator is some binary operator \, expr can understand.; #X connect 0 0 8 0; #X connect 2 0 5 1; #X connect 3 0 19 0; #X connect 4 0 17 0; #X connect 4 1 5 0; #X connect 5 0 2 0; #X connect 5 0 3 1; #X connect 6 0 17 1; #X connect 7 0 4 0; #X connect 8 0 3 0; #X connect 8 1 7 0; #X connect 8 2 10 0; #X connect 11 0 5 1; #X connect 16 0 8 0; #X connect 17 0 5 0; #X connect 18 0 17 1;