<html><head></head><body><div style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px;"><div></div><div>>> whereas you cannot get an abstraction's selector (which would </div><div id="ydp4c2b496dyahoo_quoted_3741958593" class="ydp4c2b496dyahoo_quoted"><div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;"><div><div dir="ltr">>> be handy for error reporting). <br clear="none"><br clear="none">> What is the selector of an abstraction? </div><div dir="ltr"><br><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">[my_abs arg1 arg2]</div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528"><br></div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">The selector is "my_abs".</div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528"><br></div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">The reason consistency probably keeps coming up is because everything </div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">on the Pd canvas as well as Pd files is just a Pd message. The possibility </div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">of learning a single set of rules for how messages behave is way easier than </div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">keeping track of special cases and inconsistencies.</div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528"><br></div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">So having a rule, "$0 expands to the first element of the argument vector," </div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">is great if the user can be guaranteed that the rule holds regardless of </div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">context of the evaluation.</div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528"><br></div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">On the other hand, suppose the rule is, "$0 expands to the first element of the argument </div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">vector UNLESS we're loading a canvas in which case it expands to a unique value </div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">to simulate locality with Pd's global binding mechanism." That's harder to reason about.</div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528"><br></div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">If you want $0 as selector in msg boxes<br></div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">you could try to teach the inconsistency by reminding users that load time and </div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">message time are completely different contexts and therefore may have different </div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">expansion behaviors for dollarsign variables. But they're still going to notice that </div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">$1-n have *analogous* behavior in each context while $0 doesn't.</div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528"><br></div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">Anyhow, given the choice between an inconsistency that very few (if any) ask for </div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">in daily patching and one that a multitude of users have pleaded for in daily patching, </div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">I'm obviously in favor of the latter.<br></div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528"><br></div><div class="ydp4c2b496dyqt2281599623" id="ydp4c2b496dyqtfd31528">-Jonathan<br></div></div></div>
                </div>
            </div></div></body></html>