<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi,</p>
<p>In the last meeting we (more or less) conclude that the most
ergonomic approach is the one that simply uses [ab <name>],
with implicit creation and deletion for the shared abstraction
definition and an implicit flat scope (instantiable by the whole
subpatch/abstractions tree, even if first definition was in an
other branch or a deeper level or inside an abstraction).</p>
<p>Local scope for these kind of abstractions will be achieved using
[ab $0-<name>]. <br>
</p>
<p>* This 'local scope' won't be, in fact, a real local scope but
the string '$0-name' is much harder to reproduce by the user
because he must know the '$0' ID of the patch where the local
abstraction has been created.</p>
<p>If a real local scope is wanted then we will have to deal with
conditional behaviour that may make the feature even harder to
implement.<br>
</p>
<p><br>
</p>
<p>The flat scope mentioned above scares me a little because it
might be the source of a lot of problems. To start with, a clean
and strong storing and lookup system for the shared abstraction
definitions must be designed and tested.</p>
<p>Possible problems:</p>
<p>- We have to prevent instantiating abstractions within themselves
(or one of their descendants).<br>
</p>
<p>- Possible name clash with other private abstractions when
instantiating file-based abstractions.</p>
<p>- Where should the abstraction definitions be stored within the
pd file, to prevent code repetition like the subpatches? Maybe
hoisted inside the root patch definition, as is currently
implemented.<br>
</p>
<p>----------------------------<br>
</p>
<p>The first approach I showed you yesterday was based on Jonathan's
approach:</p>
<pre style="white-space: pre-wrap; color: rgb(0, 0, 0); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">> 1. Implicit as you describe above. Rule: the names go from the root>
> down to the subpatches without
> affecting file-based abstractions in the root or the subpatches. If
> the [ab name] exists inside a file-based abstraction, it doesn't
> affect the parent on which the abstraction was created.
</pre>
<p>If I understood correctly, the goal now is the same but the scope
now crosses file boundaries.</p>
<p>Best,<br>
</p>
<p><br>
</p>
<p><br>
</p>
<p><br>
</p>
<p><br>
</p>
</body>
</html>