On Fri, 2013-01-25 at 15:21 -0800, Jonathan Wilkes wrote:
From: Bill Gribble grib@billgribble.com I am working on a pd-clone intended to explore a lot of the topics in this thread. It's not fully baked yet -- the biggest working patch is a biquad filter designer with pole-zero and freq response plotting -- but I'm particularly excited about the approach to namespacing and scope management, which works a lot like hc describes. Patches have a set of scopes which can be mapped onto subpatches (represented as layers, not separate windows). Name resolution in send/receive elements works like you would want it to.
How does scope work for abstractions?
Well, every object in a patch has a name. To find that object, the tree of patches and scopes is crawled upward from the site of the lookup. For example, the (equivalent of) [s "foo"] first looks in the scope of the [s], then the patch-global scope of the containing patch, then in the application global scope for the name "foo".
Dotted notation can drill down, so [s "foo.bar"] would try to find an object named "foo", then find "bar" in its patch-global scope (or an object named "bar" within a scope named "foo" in the current patch).
Does that make sense?
Thanks, Bill Gribble