----- Original Message -----
From: Martin Peach martin.peach@sympatico.ca To: Jonathan Wilkes jancsika@yahoo.com Cc: IOhannes m zmoelnig zmoelnig@iem.at; "pd-list@iem.at" pd-list@iem.at Sent: Wednesday, February 15, 2012 4:49 PM Subject: Re: [PD] constants
On 2012-02-15 16:11, Jonathan Wilkes wrote:
Let's go back:
Instead of time units, let's take the incoming single-selector
"pi" and replace it with
the float value of pi for any object that doesn't have a "pi"
method or an
"anything" method (but does have a float method). Furthermore,
if a class defines a
float argument but the argument provided isn't a float, then check
first if what it received
was A_SYMBOL 'pi' and if so replace with the float value of pi.
Is what I wrote above possible to do without causing huge problems to
performance or
creating ambiguities? Is it something people would look at as a feature,
or a nuisance that
makes it harder to learn Pd? If the answer is that something like this
constant expansion
is a bad idea then there's no point discussing macro expansion for time
units.
-Jonathan
I think it's a bad idea to make assumptions like that. It would be far better to interpose a filter when needed. I attach a pdlua script [str2ms] that will output a float millisecond value given some kind of string specifying time. It's very easy to extend to other time types and only needs to be used if you want it, not like some secret apple troll lurking inside the object that "knows" what I want.
But "what you want" in this case is necessarily always an error to the console, without the possibility of doing something else instead.
Is there a way to give the user an option of what happens, like: [badarg pi 3.14...] <-- if the bad arg is "pi" substitute 3.14... and create the object
-Jonathan
Martin