I think it would make sense (both pedagogically and practically) if $0 in message boxes actually _did_ something. Incrementing per message box would be one option, but expanding to a user-defined symbol or float could be very useful:
[loadbang] | [f $0] | [; set $0(
That way, message box $0 is set by an incoming message: it then sets all current (and future) message box $0's for the patch/abstraction. Alternatively, you could use it for other stuff, like a substitution for pd-my-complicated-and-tiresome-to-type-subpatch-name.
abstraction $0: set by pd, unique abs instance identifier, common to all object boxes message box $0: set by user through msg box, common to all abstraction instance msg's
Seems like that would be consistent with the language as far as I understand it.
-Jonathan
--- On Mon, 2/9/09, Matt Barber brbrofsvl@gmail.com wrote:
From: Matt Barber brbrofsvl@gmail.com Subject: Re: [PD] here I go again..dynamic abstractions To: "PD-List" pd-list@iem.at Date: Monday, February 9, 2009, 9:01 PM [f $0]-[message $1( is conceptually different from [message $0( for the same reason that [f $2]-[message $1( is conceptually different from [message $2( (and would be, even if $0 had any meaning in a message box). When I teach I always start with dollar-sign expansion in message-boxes, since it's simpler and easier to comprehend. Then when this issue comes up when they move to dollar-sign expansion in abstractions (and it always does come up), you can help them think it through with what they already know about message boxes.
I only see two options: one is to use a different dereference symbol for abstraction arguments in message boxes -- but why worry with that since it's easy enough to get abstraction arguments into messages at "run-time?" -- the other is to make an exception and have special behavior for $0 in message boxes (that is, make it the same as in object boxes) -- but then this probably breaks the consistency of the language.
Matt
Date: Mon, 09 Feb 2009 13:33:36 +0100 From: Georg Werner georg@fricklr.de Subject: Re: [PD] here I go again..dynamic
abstractions
To: pd-list@iem.at Message-ID: 499022A0.7080702@fricklr.de Content-Type: text/plain; charset=ISO-8859-1;
format=flowed
hi,
Frank Barknecht:
How about making $0 in messages be a message
counter?
if somebody really needs that - i dont ;)
ok, i give up. i think we are on a rather
philosophical point now.
but i had a lot of times when students where asking
why they have to
write [f $0]-[foobar $1( instead of [foobar $0(. so
this came up from a
users point of view. after getting all your input (thanks). i think Claude
brought up the
most logical solution, because this makes the
different functions of $
obvious and obsolete. And it would help users and
devs. (i know it will
be a long way - cause it will break some patches ...
:( )
$ in message boxes is unfortunate. If there was
a different symbol,
perhaps #, you could combine both phases in one
object box to avoid
jumping through pointless hoops. [$0-#1-$2-#3( would be nice, but as Pd is now,
it's a nightmare.
not a nightmare, but this is one point why Pd is
harder to learn for
beginners than it has to. georg
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list