[PD] Finding "$0" and dealing with it in messages
Roman Haefeli
reduzierer at yahoo.de
Thu Nov 26 10:43:26 CET 2009
Hi Frank
Thanks a lot for giving me such detailed insight.
Am 26.11.09 09:24 schrieb "Frank Barknecht" unter <fbar at footils.org>:
> Hallo,
> Roman Haefeli hat gesagt: // Roman Haefeli wrote:
>
>> Of course, i was not going to question that. However, i consider it
>> sub-optimal, that several object classes treat the very same data type so
>> differently. The fact, that you have to learn every single object behaviour
>> does certainly not justify, that [list 45(->[symbol] = 'symbol list',
>> whereas [list 45(->[symbol\ = 'symbol float'. This difference in behaviour
>> seems pretty arbitrary to me (please correct me). I'm not getting any
>> smarter by knowing this.
>
> Personally I consider this a kind of inconsistency bug.
Ok.
>> To me, it is not even clear, when data types are converted, in cases when
>> conversion happens at all. Does it happen at the 'inlet', or the 'outlet'?
>> at both?
>
> I happens in between: Every Pd objectclass can define different methods
> for different kinds of messages coming in.
...
> What an object produces on the outlet-side also is defined by the object: From
> an abstraction, you can send out bangs, symbols, meta-messages etc. Same with
> C-objects: There are Pd functions like outlet_float(), outlet_symbol(),
> outlet_anything() that an external's author can use to produce any kind of
> output. This includes the possibility to write objects that behave "strange"
> or inconsistent.
Ok, i see. If i understand right, this would also make it possible to
deliberately create a message 'list 23' at the outlet, which is probably
converted to a 'float 23' by the next object's outlet (_if_ this next
object's inlet knows what to do with the selector 'list').
Unfortunately, knowing this doesn't make me understand what happens here -
for instance:
[list 23(
|
[print]
which produces simply '23' in the pd window. Now, does the message box
object do some evaluation and effectively sends 'float 23' instead of 'list
23', or is the [print] that does some reformatting and treats single element
lists as 'float' or 'symbol' messages?
Is there a way to know what goes through a connection wire?
Also interesting cases to consider:
[list velo( -> 'symbol velo'
[float 12 34( -> '12'
> But these inconsistencies are not caused by the message
> mechanism
> behind it, they are caused by the object's author, either deliberatly or not.
I see. Let me pick an example, which to me is not quite clear, which of the
involved object classes should be considered buggy:
[foo 56(
|
[route foo]
|
[*~ ]
This raises an error:
inlet: expected 'signal' but got 'list'
Is it [route]'s fault not to spit out a message with 'float' selector, since
obviously the message contains only a single element? Or is [*~ ] supposed
to accept single-element-lists as well and raise only an error, when the
single-element-list contains a symbol, but not a float?
>> Knowing this would probably make me any smarter and would allow me
>> to make predictions about how certain objects behave in certain situations.
>
> I hope you're a bit smarter now, but probably you still cannot make
> predictions. :)
Hmm.. i guess, you're right...
roman
___________________________________________________________
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de
More information about the Pd-list
mailing list