[PD] Re: [PD-dev] Re: prepend w/ set message - ignore

Mathieu Bouchard matju at sympatico.ca
Tue Jan 4 11:44:14 CET 2005

On Tue, 4 Jan 2005, Johannes M Zmoelnig wrote:
> Mathieu Bouchard wrote:
> > On Mon, 3 Jan 2005, Krzysztof Czaja wrote:
> > 
> > which one should be produced?
> > 
> >   (b) first 'test this bang',   second no-op
> hmm, i disagree with that.
> [bang( is bang and not a symbol "bang"!

Alrighty, here's a second issue I hid in the carpet so as to not distract
from my first issue, but that I have to uncover to answer you here:

Since every possible symbol can be used in any message, save for a few
reserved keywords, what would be a logical way of distinguishing those
from symbol messages, which have "symbol" as their selector and whatever
symbol as their $1 ?

In GridFlow, 

[foo(         -> [messageprepend zzz] gives 'zzz foo'
[symbol foo(  -> [messageprepend zzz] gives 'zzz symbol foo'
[foo\         -> [messageprepend zzz] gives 'zzz symbol foo'

(where [\ is a symbolbox)

Where I designed [messageprepend], among other things, having in mind a
mental model of Pd that is concise, consistent, and founded on the
preconceptions I have learned while trying several shovelfuls of different
programming languages. (which is why I sort of bang my head on the wall
with issues like this one and the one in the previous mail: I don't
understand those behaviours; they make no sense to me, and I expect to be
able to make sense of them given how much time i spend on semantics!)

In the previous mail, the second and third entry would have given the
first result. Now, until here, I have assumed that [prepend] should be
"injective", that is, it is possible to know which inputs were put in just
by looking at the output. If we drop that requirement, then [foo( and
[symbol foo( could give the same result for convenience, but it would be
inconsistent with the fact that, in general, to write in a messagebox a
symbol compatible with a symbolbox, you actually have to write "symbol" in
front of it, else it is rejected as "no method for ...".

> bang is an atomic event not containing data (not even a timestamp) how
> do you encapsulate such a time-based event within a data-set (like
> "test this bang") ?? this does not make sense to me at all

could you please elaborate on this?

> > PS: (*please* don't say "you know, pd is not a programming language...")
> but it is turing complete, so who cares...

Well, there are many turing-complete languages for which no-one expects
a quality experience when programming them. Examples are:

  * Turing Machine
  * Lambda Calculus
  * Game of Life

It turns out that even though the intent of the original creator of a
given programming language is often largely ignored by its users, that
doesn't mean it's always the case. For example, the first three examples
were designed specifically to prove a point about really unwieldy
languages still being "universal computers". Because of their features (or
incredible absence thereof) it's normal that no-one expects anything from

However, in the case of PureData, after the intent of the author (or the
marketing line) has been rejected/ignored, people *are* willing to ascribe
new intents and meanings to PureData. The model of the language "talks to
them": they *do* expect to find quality time with PureData, or at least a
system that is 90% like PureData: and this is where the feature requests
pour in, like

  * Pd should do pixel video (solved in 1998)
  * Pd should allow ~-objects to do batchjobs nonrealtime (not yet)
  * Pd should have true strings (cross fingers for this year)
  * etc

as well as bug reports, which may sound like my last two mails.

Mathieu Bouchard -=- Montréal QC Canada -=- http://artengine.ca/matju

More information about the Pd-list mailing list