Hallo, Miller Puckette hat gesagt: // Miller Puckette wrote:
There's a delicate problem with "list" sprouting an inlet to store lists... what do you do when someone "bangs" it? If "bang" is to be considered as the same thing as an empty list, then the correct thing would be to replace the stored list with an empty one, then output it -- but that would make it impossible ever to get the stored list back out!
That's indeed a delicate situation, which I didn't think of.
A further suggestion by me would be to maybe add a kind of combination "list first" and "list last", that is: Give "first" a second outlet wich outputs the rest of the list.
Seems like this would be a great convenience. Maybe I should just omit "list first" and "list last" and replace them with a "list split" that splits it in two at any desired point.
I think I'd prefer "split" over "first" and "last" (but maybe the Lisp people would even prefer something else... ;)
My own motivation is to make it possible to write libraries such as RRADical (especially RRADical!) without needing to include other libraries (which is confusing, especially because of the two competing "prepend" objects.) So if you can name any other functionality you'd need beyond what's here I'll certainly want to put it in. (Not even limited to the list object...)
I did a little check what externals I used in the state savingi part of RRAD, and those are not many. In fact, apart from OSC and [pool] I only depend on "prepend" and for some OSC-related operations I use fromsymbol/tosymbol to modify the first element of a list (change "/s/c 1 2 3 ..." to "/o/s/c 1 2 3 ...")
I think, having OSC available as internal in Pd could be very useful: It has become a kind of standard for communication between (multimedia) software and IMO is now almost as important as Midi-IO.
A kind of more general key/value container (like an extended textfile/coll/qlist) also is something, that many people seem to look for and only find in externals as coll, pool, pbank, etc.
Ciao