[PD] definitions of data types

Hans-Christoph Steiner hans at eds.org
Mon Feb 6 01:02:45 CET 2006


So there have been lots of emails over the years on what to call all  
the various types of data that Pd works with.  In order to support the  
effort of getting to the bottom of this, I have started a wiki page to  
document all of the relevant details.

http://puredata.org/dev/PdDefinitions

I've also started putting related patches in CVS ("messageoddness"  
isn't the best name, but I haven't gotten around to changing it):

/doc/additional/messageoddness

The key thing to this discussion is to separate the implementation from  
the language.  Pd is a language in its own right, and therefore when  
talking about definitions, we should not talk about how its  
implemented, but rather how Pd interprets things.

For data types, I think its easiest to look to [route], [trigger], and  
[select], three Pd objects whose core function is to interpret data  
types.  And this will give some perhaps surprising results.  For  
example:

[word(
|
[select symbol]

this tells us "error: select: no method for 'word'", therefore [word(  
is not a symbol.

[word(
|
[route symbol]

This outputs on the right inlet, telling us [word( is not a symbol.

[word(
|
[trigger symbol]

This tells us "error: trigger: can only convert 's' to 'b' or 'a'".   
This error message seems to tell us that [word( is not a symbol also.

So in Pd, [word( is not a bang, float, symbol, list, or pointer.  So  
its currently undefined, and its an "element".  A list is made up of  
"elements" also.  There are "list" series and series which are  
currently undefined, meaning series of 2 or more elements which starts  
neither with an non-float element nor the selector "list".  Which  
brings me to something like this:


bang
float (== numeric element)
list  (== list series)
pointer
symbol
symbolic element
selector series

Here are some attempts at definitions:

list:  a series of 2 or more elements whose first element is either the  
selector "list", or a float, which causes the "list" selector to be  
implied.  A 0-element list is a bang, a 1-element list is either a  
float or a symbol, are there any exceptions where a 0- or 1-element  
lists actually exists?  I suppose only in a message box.

symbol: a symbol is a two element series where the first element is the  
"symbol" selector and the second element is a symbolic element.  But  
any series with a selector of "symbol" with more than two elements is  
automatically converted to a symbol by truncating all other symbolic  
elements but the "symbol" selector and the second element.

selector series: a series of 2 or more elements whose first element is  
neither the selector "list" nor a numeric element.  But it needs a  
better term.

numeric element: any element which is a functional representation of a  
number.  In Pd, a numeric element is the same as a float.

symbolic element: any element which is not a functional representation  
of a number, usually in the form of words


.hc


________________________________________________________________________ 
____

"Computer science is no more related to the computer than astronomy is  
related to the telescope."
                                                           -Edsger  
Dykstra





More information about the Pd-list mailing list