#N canvas 63 22 763 581 10; #X msg 95 298 1 2 3; #X obj 125 329 route list; #X msg 62 278 list 1 2 3; #X msg 10 63 list; #X symbolatom 32 129 10 0 0 0 - - -; #X obj 4 2 cnv 15 750 20 empty empty all_about_lists_vs_anythings 20 10 1 18 -233017 -66577 0; #X text 7 39 SPECIAL CASES OF "LISTS".; #X obj 125 348 bng 15 250 50 0 empty empty list -20 7 1 10 -262144 -1 -1; #X obj 189 349 bng 15 250 50 0 empty empty non-list 19 7 1 10 -262144 -1 -1; #X msg 184 277 list this is a set with a cast; #X msg 191 296 this is a set withOUT a cast; #X obj 441 135 bng 15 250 50 0 empty empty bang 0 20 1 9 -262144 -1 -1; #X obj 490 135 bng 15 250 50 0 empty empty float 0 21 1 9 -262144 -1 -1; #X obj 539 135 bng 15 250 50 0 empty empty symbol 0 21 1 9 -262144 -1 -1; #X msg 443 73 list this is a set with a cast; #X msg 450 92 this is a set withOUT a cast; #X obj 638 135 bng 15 250 50 0 empty empty list 0 21 1 9 -262144 -1 -1; #X obj 120 527 route list; #X obj 120 546 bng 15 250 50 0 empty empty list -20 7 1 10 -262144 -1 -1; #X obj 184 547 bng 15 250 50 0 empty empty non-list 19 7 1 10 -262144 -1 -1; #X msg 189 491 one 2 three 4 five; #X msg 40 491 1 two 3 four 5; #X text 8 198 IMPLICIT LISTS; #X msg 40 471 list 1 two 3 four 5; #X msg 189 471 list one 2 three 4 five; #X msg 17 83 list 25; #X msg 24 103 list foo; #X text 87 104 A "list" of one "symbol" is converted to a "symbol" ; #X text 72 83 A "list" of one "float" is converted to a "float"; #X text 50 63 An empty "list" is converted to a "bang"; #X obj 477 514 pddp/pddplink all_about_atom_conversion.pd -text all_about_atom_conversion ; #X obj 721 3 pddp/pddplink http://puredata.info/dev/pddp -text pddp ; #X text 11 400 Sets of mixed atoms are defined based on what the "selector" (the first element of a set). If the "selector" is a "float" \, then the set is a "list". If the "selector" is the word "list" \, then the set is a "list". If the "selector" is a "symbol" \, then the set is NOT a "list":; #X text 600 551 updated for Pd 0.38-2; #X obj 688 135 bng 15 250 50 0 empty empty UNDEFINED 0 21 1 9 -262144 -1 -1; #X msg 459 286 1 1; #X obj 452 312 +; #X floatatom 452 334 5 0 0 0 - - -; #X msg 424 286 1 3; #X text 416 46 A set that is not a "list" has an undefined type:; #X msg 451 267 list 1 2; #X text 402 208 If you send a "list" of arguments to the first inlet of an object \, the elements of that "list" will be applied to the respective inlet. This does not apply to sets that are NOT "lists". ; #X text 400 192 "LISTS" MAP TO INLETS; #X text 407 367 WORKING WITH MIXED SETS; #X text 11 381 SETS OF MIXED "ATOMS"; #X text 9 218 A message having more than one atom starting with a "float" is implicitly considered a list. A message having more than one atom starting with a "symbol" is not \, unless that "symbol" is the selector "list".; #N canvas 183 32 857 475 has 0; #X obj 96 162 print; #X msg 57 93 list one two three; #X msg 42 54 1 2 3; #X msg 51 73 one 2 three; #X obj 17 162 route list; #X obj 17 181 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 85 182 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 44 132 prepend test; #X text 12 229 [print] only interprets the "list" selector when the following body of the message is an implied list \, i.e. a set of atoms that starts with a float.; #X msg 443 68 one 2 three; #X text 141 134 (I used cyclone's); #X obj 442 127 route one; #X text 426 17 [route] accepts lists and undefined sets and outputs lists \, and like [print] only interprets the 'list' selector for implied lists:; #X obj 460 159 print ONE; #X obj 441 159 bng 16 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 604 159 bng 16 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 668 160 print ONE; #X obj 650 160 bng 16 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 813 160 bng 16 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 651 129 route 1; #X msg 658 90 list 1 two 3; #X msg 652 70 1 two 3; #X msg 449 88 list one 2 three; #X msg 281 68 one 2 three; #X obj 280 133 prepend list; #X obj 280 177 print PREPEND_LIST; #X msg 290 89 list one 2 three; #X text 12 19 [prepend] interprets lists and outputs undefined sets. ; #X obj 746 160 print NOT; #X obj 536 159 print NOT; #X msg 679 305 symbol test; #X obj 685 359 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 762 360 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 677 398 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 755 398 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 685 341 route symbol; #X obj 677 379 route symbol; #X msg 770 305 test; #X obj 470 359 route list; #X obj 470 378 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 538 379 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 457 397 route list; #X obj 457 416 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 525 417 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 473 310 list 1 two 3; #X msg 456 290 1 two 3; #X msg 489 330 list one 2 three; #X msg 133 330 one 2 three; #X obj 65 414 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 133 415 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 151 390 print STRAIGHT; #X msg 117 310 list 1 two 3; #X msg 100 290 1 two 3; #X msg 142 351 list one 2 three; #X obj 68 391 route list; #X text 429 231 [route list] interprets all lists \, but outputs non-lists on its left outlet for lists whose first element is a symbol. [route symbol] outputs a symbol from its left outlet.; #X connect 1 0 7 0; #X connect 2 0 7 0; #X connect 3 0 7 0; #X connect 4 0 5 0; #X connect 4 1 6 0; #X connect 7 0 0 0; #X connect 7 0 4 0; #X connect 9 0 11 0; #X connect 11 0 13 0; #X connect 11 0 14 0; #X connect 11 1 15 0; #X connect 11 1 29 0; #X connect 19 0 16 0; #X connect 19 0 17 0; #X connect 19 1 18 0; #X connect 19 1 28 0; #X connect 20 0 19 0; #X connect 21 0 19 0; #X connect 22 0 11 0; #X connect 23 0 24 0; #X connect 24 0 25 0; #X connect 26 0 24 0; #X connect 30 0 35 0; #X connect 35 0 31 0; #X connect 35 0 36 0; #X connect 35 1 32 0; #X connect 36 0 33 0; #X connect 36 1 34 0; #X connect 37 0 35 0; #X connect 38 0 39 0; #X connect 38 0 41 0; #X connect 38 1 40 0; #X connect 41 0 42 0; #X connect 41 1 43 0; #X connect 44 0 38 0; #X connect 45 0 38 0; #X connect 46 0 38 0; #X connect 47 0 50 0; #X connect 47 0 54 0; #X connect 51 0 50 0; #X connect 51 0 54 0; #X connect 52 0 50 0; #X connect 52 0 54 0; #X connect 53 0 50 0; #X connect 53 0 54 0; #X connect 54 0 48 0; #X connect 54 1 49 0; #X restore 443 453 pd has some odd cases of list handling; #X text 407 389 When working with sets that might be either "lists" or undefined \, use [prepend]. Many of the "list" handling objects in Pd have odd quirks which can make things difficult.; #X obj 441 115 route bang float symbol pointer list; #X obj 589 135 bng 15 250 50 0 empty empty pointer 0 21 1 9 -262144 -1 -1; #X obj 11 169 bng 15 250 50 0 empty empty bang 0 20 1 9 -262144 -1 -1; #X obj 60 169 bng 15 250 50 0 empty empty float 0 21 1 9 -262144 -1 -1; #X obj 109 169 bng 15 250 50 0 empty empty symbol 0 21 1 9 -262144 -1 -1; #X obj 208 169 bng 15 250 50 0 empty empty list 0 21 1 9 -262144 -1 -1; #X obj 258 169 bng 15 250 50 0 empty empty UNDEFINED 0 21 1 9 -262144 -1 -1; #X obj 11 149 route bang float symbol pointer list; #X obj 159 169 bng 15 250 50 0 empty empty pointer 0 21 1 9 -262144 -1 -1; #X connect 0 0 1 0; #X connect 1 0 7 0; #X connect 1 1 8 0; #X connect 2 0 1 0; #X connect 3 0 55 0; #X connect 9 0 1 0; #X connect 10 0 1 0; #X connect 14 0 48 0; #X connect 15 0 48 0; #X connect 17 0 18 0; #X connect 17 1 19 0; #X connect 20 0 17 0; #X connect 21 0 17 0; #X connect 23 0 17 0; #X connect 24 0 17 0; #X connect 25 0 55 0; #X connect 26 0 4 0; #X connect 26 0 55 0; #X connect 35 0 36 0; #X connect 36 0 37 0; #X connect 38 0 36 0; #X connect 40 0 36 0; #X connect 48 0 11 0; #X connect 48 1 12 0; #X connect 48 2 13 0; #X connect 48 3 49 0; #X connect 48 4 16 0; #X connect 48 5 34 0; #X connect 55 0 50 0; #X connect 55 1 51 0; #X connect 55 2 52 0; #X connect 55 3 56 0; #X connect 55 4 53 0; #X connect 55 5 54 0;