[PD-dev] BUG: namespace prefixes broken in 0.40

Hans-Christoph Steiner hans at eds.org
Wed Nov 1 19:27:15 CET 2006

On Nov 1, 2006, at 9:02 AM, Mathieu Bouchard wrote:

> On Wed, 1 Nov 2006, Frank Barknecht wrote:
>> Hans-Christoph Steiner hat gesagt: // Hans-Christoph Steiner wrote:
>>> Then to make iemlib/split.pd_darwin work as [split], one would use
>>> [declare iemlib] or [import iemlib].
>> Syntax suggestion: what about [declare -import iemlib]?
> Some consensus on how to do things like that ("keyword arguments")  
> ould help:
> 1. In Flext/Jitter style: [declare @import iemlib].
> 2. In Unix/Tcl/Toxy style: [declare -import iemlib].
> 3. In GridFlow style: [declare, import iemlib], where "import" is a  
> selector and the name of a method, and the comma is like [initbang].
> The use of "@" to mean "attribute" may remind of Ruby, but in Ruby,  
> "@" is a kind of variable, not a kind of argument.
> The GridFlow style relies on the ability to replace keyword  
> arguments of a constructor by a bunch of little messages that  
> modify the object just after it's constructed (this is not always  
> possible).
> One of (1) and (2) is redundant. Then I wouldn't know which of that  
> or (3) to pick. The (3) has the important concept that every option  
> is runtime-configurable. That might not be an issue for [declare],  
> but that is an issue for other object classes that [declare] would  
> be consistent with.
> How would you specify multiple imports? It may make the difference  
> between Unix style and Tcl style:
>   [declare -import foo -import bar] <- unix
>   [declare -import {foo bar}] <- tcl
> because in tcl style, every time an option is specified, it has to  
> completely override the existing option of the same name: it can't  
> add up like pd's -lib -path -helppath. Pd doesn't accept {} so here  
> are some possible replacements:
>   [declare -import (foo bar)] <- GF-style nested lists
>   [declare -import foo bar] <- use dash-prefixed symbols as delimiters
>   [declare, import foo bar] <- use comma as delimiter

One very important aspect of Pd is its very minimal syntax.  I think  
its quite important to preserve that.  I definitely agree we should  
have a standard way of doing this kind of thing, but I don't really  
like any of the above options.  Pd is not Ruby, Tcl, C, UNIX, etc.  
and it shouldn't follow those conventions without really good reasons  
to break the current syntax.

Adding commas and () in object boxes is totally unprecedented and I  
can't see any benefit.  Perhaps this extended syntax is useful in  
other situations, but I think this situation could easily be taken  
care of using only current syntax:

[import foo bar]
[path foo bar]

[global_import foo bar]
[global_path foo bar]

I think it could make more sense to have the global settings  
controlled by messages.  These settings are already controlled  
separately from the patch itself and hidden in the preferecne panels  
and files, so it terms of the patch representing the run state, I  
don't think it would make a difference; that stuff is outside of the  
realm of the patch.  So it could look like this:

[;pd import foo bar(
[;pd path foo bar(



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

More information about the Pd-dev mailing list