[PD-dev] $0 in messages, was: multiple $arg-expansion
Hans-Christoph Steiner
hans at eds.org
Fri Jan 27 17:32:32 CET 2006
On Jan 26, 2006, at 1:36 PM, Frank Barknecht wrote:
> Hallo,
> Hans-Christoph Steiner hat gesagt: // Hans-Christoph Steiner wrote:
>
>>> But with pd-0.39 this issue is solved thanks to the [list] object,
>>> that automatically converts everything to a full-blown list-list, if
>>> one is needed. This is another reason to upgrade to 0.39 soon, if
>>> someone hasn't done so yet.
>>
>> Sadly, this doesn't fix the problems [route] and [print] have with
>> lists. See [pd has some odd cases of list handling] in
>> doc/pddp/all_about_lists_vs_anythings.pd
>
> Maybe I'm just too used to the way lists and selectors work in Pd, but
> I don't see where the problem with [route] is (I agree, that [print]
> sucks.)
>
> First: [prepend] is an external so it has its own rules and cannot be
> an argument against the way, Pd handles selectors and lists .The Pd
> object to use is [list prepend]. It always outputs list-lists.
> That takes care of two examples in the pddp-patch.
> "one 2 three" vs. "list one 2 three":
>
> [route one] behaves correctly here. If one wants to get "2 three" as a
> result for the second message, then one should use [list trim] in
> front of route. Fixing the complaint in the pddp-patch actually would
> make [route one] imply a [route list] or [list trim] internally which
> is inconsistent and not always wanted so it's better to keep it
> explicit with [list trim].
>
> "1 two 3" vs. "list 1 two 3"
>
> If one can accept that numbers can never be selectors, then the
> automatic conversion of selector-less lists starting with a float to
> list-lists is not unusual. And once it is accepted, that "1 two 3"
> actually is *the same* as "list 1 two 3" in the same way, that "float
> 3.141" is the same as "3.141" I also don't see a real problem.
>
> The only possible difficulty is to understand, that "one 2 three" is
> *not* the same as "list one 2 three" and that [route] thus will behave
> differently here.
>
> The only case where I could follow the difficulties is the automatic
> conversion of "list x" to "symbol x" in [route]. This is consistent
> with converting "list 1" to "float 1" but of course is different from
> the auto-conversion of "1" to "float 1" because "x" is not the same as
> "symbol x" immediatly.
>
> However: In my view "list x" being equivalent to "symbol x" has
> advantages in practice, because if after some operations you end up
> with a list-list containing only one symbol, you probably want a
> symbol actually. At least that is my experience.
>
> Btw: While testing around some cases, I actually think I found a bug
> in [select] which is illustrated in attached patch.
Now that this behavior is all mapped out, its not impossible to figure
it out and understand. But I find that when I am working with
processing messages, its far from intuitive. And it was not
straightforward to learn.
My quick answer to the above is that I think that [route symbol] should
always output a symbol and [route list] should always output a list
just like how [route bang] always outputs a bang and [route float]
always outputs a float. That seems consistent and logical to me.
Then if I want to convert lists to bangs, symbols, floats, or undefined
sets, I could do so afterwards, with [list] or whatever.
I'll have to explore the 0.39 [list] object a bit more to see how it
changes my concerns with the list processing stuff.
.hc
________________________________________________________________________
____
"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