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