[PD] mrpeach osc - pipelist question
matju at artengine.ca
Tue Jul 8 00:04:26 CEST 2008
On Sun, 6 Jul 2008, Martin Peach wrote:
> ...but isn't 'list' a selector as well? What is special about it apart
> from the existence of list methods in Pd? Couldn't one use
> outlet_anything for lists as well?
List messages are special because in plain Pd, there is no list atomtype,
but there is a wish to take a list as being one datatype. At the same
time, there is a need for messages that could be implemented as lists but
that handle special functions. Therefore, anything() is the all-inclusive
method for messages, and list() is a special case of anything() with
s=&s_list. Other builtin selectors are special cases of list() even though
they have a different selector, because that selector mutates
I think of the list-vs-anything distinction as being a good idea, while I
tend to think of the selector mutation as being a bad idea, which could
have been dealt with in several other ways (depending on other features
that could have been dealt with differently), but this is largely
theoretical, as we wouldn't be able to change it without having pd stop
> It seems that outlet_list just prepends a 'list' selector to the rest of
> the atoms,
Yes, it's just a call to anything() with an implicit s=&s_list ...
outlet_float and such are a tiny bit more complex as they build a
t_atom on top of that.
> and a list method on an inlet just strips it and passes the rest.
Actually, it does not even strip it. The function-pointer signature for
class_addanything and class_addlist are the same.
>> i hope it makes sense.
> I'm getting there;)
The origin of the concept of selector is the method-names in
object-oriented language (it is called "selector" in several of those
languages). For example, if you define a member function named "open" in
C++, or use class_addmethod(...gensym("open")...), or use [route open] on
a leftmost [inlet] and connect something to the left outlet, what it does
is morally equivalent.
PS: For further confusion, [route open] does the wrong thing by default,
as the resulting message doesn't have the same $1 anymore... it would make
more sense to just replace the selector by &s_list and let the user do
[list trim] if (s)he wants, given what one would most want to do with a
[route] on an [inlet].
_ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard - tél:+1.514.383.3801, Montréal, Québec
More information about the Pd-list