[PD] confused about $1 in messages

Spencer Russell sfr at mit.edu
Mon Jan 20 20:07:27 CET 2014


Thanks Jonathan for the detailed response and pointer to the docs. As a
longtime (but somewhat sporadic) PD user this list behavior still becomes a
bit fuzzy to me sometimes, and this helps make it much more clear.

-s


On Mon, Jan 20, 2014 at 1:30 PM, Jonathan Wilkes <jancsika at yahoo.com> wrote:

> I'm not sure why the people replying to you are feigning ignorance on how
> this situation could possibly be confusing.  You're chopping off the word
> "one" with [list split] and leaving it intact on the other message; yet the
> dollarsign substitution gives you the same output in both cases.
> Furthermore, if you use [list length] on each message you will find the two
> message have a different number of elements.
>
> What you don't see, however, is that [list] objects like [list split]
> interpret incoming messages as "list" messages-- that is, they add the word
> "list" to the beginning of the message.  Also, they prepend a "list"
> selector to the messages they send out (except for [list trim], of course).
>
> But we're not done.  The selectors "list", "float", and "symbol" are
> special and do not get counted as elements with [list length].  Yet inside
> message boxes they _do_ get counted as the selector (i.e., the very first
> symbol atom in a message) when variable substitution is involved.
>
> Once you know those two details it gets a little easier to grasp.
>
> This is all further complicated by the fact that there is no dollarsign
> variable in Pd that can get the selector of an incoming message.  So for
> "list two three" you can't get "list" with a dollarsign variable, and
> likewise for "one two three" you can't get "one" with a dollarsign
> variable.  That's a real sticking point for new users, especially because
> they've no doubt already seen how seamlessly everything works when only
> numbers are involved.
>
> So I'd suggest everyone have a look at the help patch for [list],
> especially the subpatch labeled [pd about-lists].  In it, Miller Puckette--
> the guy who designed and implemented this part of the language-- describes
> what is happening in some detail.  In his explanation he questions his own
> design, even going so far as calling the very distinction you point out
> here "ugly".  It's not the easiest part of Pd to understand, and it's the
> reason why you're having a problem in the patch example you gave.
>
> But if you learn to use the [list] family objects when dealing with data
> messages it can makes things a lot easier.  Since you know those objects
> will output messages with a "list" selector, then for everything other than
> a bang you're guaranteed that [$1( will work properly.
>
> -Jonathan
>
>
>   On Monday, January 20, 2014 11:33 AM, Jack <jack at rybn.org> wrote:
>  Le 20/01/2014 15:34, rolfm at dds.nl a écrit :
> > dear list,
> >
> > i'm confused about the $1 replacement in messages.
> >
> > [one two three(
> > |\
> > | \
> > |  [list split 1]
> > |      /
> > |    /
> > |    /
> > |  /
> > |
> > [;
> > [this $1 $2(
> >
> > [r this]
> > |
> > [print this]
> >
> > output:
> > this: two three
> > this: two three
> >
> > why?
> >
> > rolf
> >
> >
> > _______________________________________________
> > Pd-list at iem.at mailing list
> > UNSUBSCRIBE and account-management ->
> > http://lists.puredata.info/listinfo/pd-list
>
> [one two three( is not a list.
> [list one two three( is a list.
> So what you get is *maybe* the normal behavior ?
> But, yep, what did you expect ?
> ++
>
> Jack
>
>
>
>
> _______________________________________________
> Pd-list at iem.at mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
>
>
>
> _______________________________________________
> Pd-list at iem.at mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20140120/6e62db5f/attachment-0001.htm>


More information about the Pd-list mailing list