<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div id="yiv2060659032"><div><div style="color:#000;background-color:#fff;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px;"><div id="yiv2060659032yui_3_16_0_7_1414103441072_4"><span id="yiv2060659032yui_3_16_0_7_1414103441072_11">Hi Chris,</span></div><div style="color:rgb(0, 0, 0);font-size:16px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;" id="yiv2060659032yui_3_16_0_7_1414103441072_13"><span id="yiv2060659032yui_3_16_0_7_1414103441072_11">I prefer the idea of using the comma atom to send messages to an object/abstraction at init time.</span></div><div id="yiv2060659032yui_3_16_0_7_1414103441072_18" style="color:rgb(0, 0,
 0);font-size:16px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;"><br><span id="yiv2060659032yui_3_16_0_7_1414103441072_11"></span></div><div id="yiv2060659032yui_3_16_0_7_1414103441072_21" style="color:rgb(0, 0, 0);font-size:16px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;"><span id="yiv2060659032yui_3_16_0_7_1414103441072_11">Example:</span></div><div id="yiv2060659032yui_3_16_0_1_1414103441072_70090" style="color:rgb(0, 0, 0);font-size:16px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;"><span id="yiv2060659032yui_3_16_0_7_1414103441072_11">[bar 15 25(</span></div><div id="yiv2060659032yui_3_16_0_7_1414103441072_28" style="color:rgb(0, 0, 0);font-size:16px;font-family:HelveticaNeue,
 Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;"><span id="yiv2060659032yui_3_16_0_7_1414103441072_11">|</span></div><div id="yiv2060659032yui_3_16_0_7_1414103441072_32" style="color:rgb(0, 0, 0);font-size:16px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;"><span id="yiv2060659032yui_3_16_0_7_1414103441072_11">[foo]</span></div><div id="yiv2060659032yui_3_16_0_7_1414103441072_36" style="color:rgb(0, 0, 0);font-size:16px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;"><br><span id="yiv2060659032yui_3_16_0_7_1414103441072_11"></span></div><div id="yiv2060659032yui_3_16_0_7_1414103441072_39" style="color:rgb(0, 0, 0);font-size:16px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande,
 sans-serif;background-color:transparent;font-style:normal;"><span id="yiv2060659032yui_3_16_0_7_1414103441072_11">would be equivalent to</span></div><div id="yiv2060659032yui_3_16_0_7_1414103441072_43" style="color:rgb(0, 0, 0);font-size:16px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;"><br><span id="yiv2060659032yui_3_16_0_7_1414103441072_11"></span></div><div id="yiv2060659032yui_3_16_0_7_1414103441072_46" style="color:rgb(0, 0, 0);font-size:16px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;"><span id="yiv2060659032yui_3_16_0_7_1414103441072_11">[initbang]</span></div><div id="yiv2060659032yui_3_16_0_7_1414103441072_50" style="color:rgb(0, 0, 0);font-size:16px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande,
 sans-serif;background-color:transparent;font-style:normal;"><span id="yiv2060659032yui_3_16_0_7_1414103441072_11">|</span></div><div id="yiv2060659032yui_3_16_0_7_1414103441072_54" style="color:rgb(0, 0, 0);font-size:16px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;"><span id="yiv2060659032yui_3_16_0_7_1414103441072_11">[foo, bar 15 25]</span></div><div id="yiv2060659032yui_3_16_0_7_1414103441072_58" style="color:rgb(0, 0, 0);font-size:16px;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;background-color:transparent;font-style:normal;"><br><span id="yiv2060659032yui_3_16_0_7_1414103441072_11"></span></div>Benefits:<br>* messages can be type-checked or arbitrary length, just like any pd message<br>* eases development of externals.  For instance, sigmund~ would have had 96 fewer lines of code because this syntax would have
 done away with the need for flags<br>* it looks like message-box syntax and behaves nearly the same<br>* once implemented, it would automatically apply (consistently) to every internal/external object<br>* matju already implemented it in Gridflow<br><br>Drawbacks:<br>* [expr], [list], [select], [route], and a few others would need to be treated specially to retain their current behavior regarding commas<br>* abstractions require some mechanism to retrieve those init-time messages.  I believe matju had them shoot out the leftmost inlet of the abstraction, with the assumption that the user would have a [route] sitting there to parse them.  Another idea would be to retrieve them from an introspection object like [canvasinfo] (and maybe have another object which splits that into a sequence of messages).<br><br>-Jonathan<br><div style="display: block;" id="yiv2060659032yui_3_16_0_7_1414103441072_7" class="yiv2060659032yahoo_quoted"> <div
 class="yiv2060659032yui_3_16_0_1_1414103441072_69648" style="font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px;"> <div class="yiv2060659032yui_3_16_0_1_1414103441072_69649" style="font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px;"> <div dir="ltr"> <font face="Arial" size="2"> On Thursday, October 23, 2014 11:28 PM, Chris McCormick <chris@mccormick.cx> wrote:<br> </font> </div>  <br><br> <div class="yiv2060659032y_msg_container">Hi all,<br><br>Here's a design pattern for passing named arguments ("bar=true foo=12")<br>into an abstraction.<br><br>Cheers,<br><br>Chris.<br><br>-- <br><a href="" rel="nofollow" class="yiv2060659032removed-link">http://mccormick.cx/</a><br><br>_______________________________________________<br><a href="" rel="nofollow" class="yiv2060659032removed-link">Pd-list@lists.iem.at</a> mailing list<br>UNSUBSCRIBE and
 account-management -> <a href="" rel="nofollow" class="yiv2060659032removed-link">http://lists.puredata.info/listinfo/pd-list</a><br><br><br></div>  </div> </div>  </div> </div></div></div></div></body></html>