[PD-dev] First attempt at "list" object uploaded
Hans-Christoph Steiner
hans at eds.org
Tue Jul 26 01:01:10 CEST 2005
I updated the attached patch to make my point much clearer. The first
attempt wasn't so clear.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: list_catalog.pd
Type: application/octet-stream
Size: 2551 bytes
Desc: not available
URL: <http://lists.puredata.info/pipermail/pd-dev/attachments/20050725/75d2df6b/attachment.obj>
-------------- next part --------------
.hc
On Jul 25, 2005, at 5:36 PM, Hans-Christoph Steiner wrote:
>
> On Jul 24, 2005, at 3:51 PM, Miller Puckette wrote:
>
>> hi all,
>>
>> Thanks for all the discussion, which changed my mind on a number of
>> points.
>
> I am definitely glad you are working on this! This is something that
> will greatly improve message handling in Pd.
>
>> I've uploaded a first attempt at a "list" object to CVS... see the
>> help
>> window, which also provides some examples. So far, I implemented
>> these
>> options:
>>
>> list append - append a list to another
>> list prepend - prepend a list to another
>> list split - first n elements to first outlet, rest to second
>> outlet
>> list trim - trim off "list" selector
>>
>> I'm not sure whether to keep the "list <function>" format or not now;
>> the
>> list seems divided over it and so am I. The advantage is it's the
>> least
>> visually cluttered way to name them. I can't use "append",
>> "prepend", or
>> "split" as names in their own right
>
> At pd~conf, we discussed renaming Pd's [append] for data structures to
> [add] so it would match [get] and [set]. Then [append] could be made
> to match [prepend]. Also, the current [append]'s help file describes
> it as "add an item to a list", so [add] makes sense. There is no
> existing [add] that I know of.
>
>> (they're already used, and using namespaces
>> to alias well-known names would cause endless confusion!)
>
> Such namespaces work well in many languages like Java, C, C++, perl,
> etc. etc. I think there would be rough-ish bits in transition, but in
> the long run would work much better for managing externals. It would
> also allow external writers to do whatever they want with their
> externals yet still be able to interoperate. The centralized
> management of a single namespace would no longer be necessary, it
> would be split up into chunks managed by individuals. And it would
> push Pd to the next step of becoming a fully fledged programming
> language.
>
> This would also allow Pd to have its own distinct namespace without
> breaking Max compatibility. If you import cyclone in a patch, then
> cyclone's [split] would override Pd's. Then you could rename it to
> [cyclone/split] and you could take out the import statement and both
> splits would work. Or vice versa, with something like [pd/split].
>
>> The advantage to
>> Iohannes's suggestion (list_append, etc.) is that external objects
>> could supply
>> list_whatever objects that could belong naturally to the series.
>
> Its not so pretty but it would work.
>
>> I think I have an adequate way to deal with non-list messages;
>> they're converted
>> to lists on input, and the "list trim" object can be used to
>> explicitly convert
>> back. I still think it's better style to use "true" lists wherever
>> possible,
>> but this will probably never find general agreement. My only advice
>> is that,
>> if you want to use non-list messages, just never, ever name a file
>> "bang"!
>
> One of the core problems with message handling using lists is that
> they are not interpreted consistently across objects. For example,
> objects like [route] and [print] only interpret the first element
> 'list' when the following body of the message is an implied list, i.e.
> a set of atoms with a float as the first element. This means you
> can't use [route] to deal with a message stream that has both lists
> and undefined sets. If this was fixed, it would make mixed message
> handling in Pd much easier. With [print], this is a bummer because it
> means that there is no method within Pd that allows you to see the
> actual raw messages as Pd sees them.
>
> This leads to me something that can be very confusing when dealing
> with message streams made up of lists, atoms, and "undefined sets":
> there are some objects that work with lists and some that work with
> "undefined sets" and its often not easily apparent to see which is
> which. Examples are [route], [print], [prepend]. I attached a patch
> to illustrate this.
>
> .hc
>
> <list_catalog.pd>
> _______________________________________________________________________
> _____
>
> As we enjoy great advantages from inventions of others, we should be
> glad of an opportunity to serve others by any invention of ours; and
> this we should do freely and generously.
>
> - Benjamin Franklin
>
________________________________________________________________________
____
"Terrorism is not an enemy. It cannot be defeated. It's a tactic.
It's about as sensible to say we declare war on night attacks and
expect we're going to win that war. We're not going to win the war on
terrorism."
- retired U.S. Army general, William Odom
More information about the Pd-dev
mailing list