<html><head></head><body><div class="ydp90fe0d5fyahoo-style-wrap" style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:16px;"><div><div dir="ltr" data-setdir="false">You mean "currying" as in this?</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false"><a href="https://web.archive.org/web/20080106132736/https://blog.3plus4.org/2007/03/23/currying-in-smalltalk/" rel="nofollow" target="_blank">https://web.archive.org/web/20080106132736/https://blog.3plus4.org/2007/03/23/currying-in-smalltalk/</a><br></div><div><br></div><div class="ydp90fe0d5fsignature"><div style="font-family:Helvetica, Arial, sans-serif;font-size:16px;"><br></div></div></div>
        <div><br></div><div><br></div>
        
        </div><div id="ydpa3d3daa2yahoo_quoted_8421493825" class="ydpa3d3daa2yahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                
                <div>
                    On Sunday, July 17, 2022 at 01:27:57 a.m. EDT, stephen--- via Cuis-dev <cuis-dev@lists.cuis.st> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div id="ydpa3d3daa2yiv5316436559"><div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div>I did a hack a while back in VisualWorks (overriding messageNotUnderstood:) so that blocks would understand any messages sent to them as variations of value:value:. <div class="ydpa3d3daa2yiv5316436559">If you parse the message that’s not understood, get the number of arguments, and then send the right version of value:value: with the arguments, you can create a block with any number of arguments and use it with any calling method, as in,</div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559"><span style="white-space: pre-wrap;" class="ydpa3d3daa2yiv5316436559Apple-tab-span">        </span>| summer sum |</div><div class="ydpa3d3daa2yiv5316436559"><span style="white-space: pre-wrap;" class="ydpa3d3daa2yiv5316436559Apple-tab-span">     </span>summer := [ :a :b | a + b].</div><div class="ydpa3d3daa2yiv5316436559"><span style="white-space: pre-wrap;" class="ydpa3d3daa2yiv5316436559Apple-tab-span">        </span>sum := summer add: 1 to: 2.</div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559">stp</div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">
<font face="Helvetica Neue" class="ydpa3d3daa2yiv5316436559"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="orphans:2;text-indent:0px;widows:2;" class="ydpa3d3daa2yiv5316436559"><span style="orphans: 2; text-indent: 0px; widows: 2; border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="color: rgb(0, 0, 0); font-size: 11px; font-style: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-transform: none; white-space: normal; word-spacing: 0px; border-collapse: separate; orphans: 2; text-indent: 0px; widows: 2;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><div class="ydpa3d3daa2yiv5316436559"><font class="ydpa3d3daa2yiv5316436559Apple-style-span"><font class="ydpa3d3daa2yiv5316436559Apple-style-span"><br class="ydpa3d3daa2yiv5316436559Apple-interchange-newline">--</font></font></div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559">                    Stephen Travis Pope   Ojai, California, USA    </div></span></span></span></span></span></span></span></span></span></span></span></span></span></span></div></div></div></span><span><div class="ydpa3d3daa2yiv5316436559"><span style="color: rgb(0, 0, 0); font-style: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; text-decoration: none; line-height: normal; font-size: 11px; border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span> </span></span></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:11px;"></span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;font-size:16px;line-height:normal;"><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span style="color:rgb(0, 0, 0);font-size:11px;font-style:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;"><span><span><span><span><span><span><span><span><span><img id="ydpa3d3daa2yiv531643655973EAC0E3-C734-4984-841D-CEC95570EA50" src="cid:CvcSeTUMNhxdlAPeetvm" class="ydpa3d3daa2yiv5316436559" data-inlineimagemanipulating="true"></span><span style="color:rgb(0, 0, 0);font-size:11px;font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>         </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><a href="http://HeavenEverywhere.com" class="ydpa3d3daa2yiv5316436559" rel="nofollow" target="_blank">http://HeavenEverywhere.com</a><span class="ydpa3d3daa2yiv5316436559">        </span><a href="http://FASTLabInc.com" class="ydpa3d3daa2yiv5316436559" rel="nofollow" target="_blank">http://FASTLabInc.com</a></span><div style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:16px;" class="ydpa3d3daa2yiv5316436559"><span style="color:rgb(0, 0, 0);font-size:16px;font-style:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;"><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span style="color:rgb(0, 0, 0);font-size:11px;font-style:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;"><span><span><span><span style="color:rgb(0, 0, 0);font-size:11px;font-style:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;"><font style="background-color: inherit;" class="ydpa3d3daa2yiv5316436559">                       </font><font color="#4787ff" style="font-size: 16px; background-color: inherit;" class="ydpa3d3daa2yiv5316436559"><span style="font-size:11px;" class="ydpa3d3daa2yiv5316436559"><a href="https://vimeo.com/user19434036/videos" style="text-decoration:underline;" class="ydpa3d3daa2yiv5316436559" rel="nofollow" target="_blank">https://vimeo.com/user19434036/videos</a>      </span></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><u style="color:rgb(71, 135, 255);" class="ydpa3d3daa2yiv5316436559"><span style="font-size:11px;" class="ydpa3d3daa2yiv5316436559"><a href="http://heaveneverywhere.com/Reflections" class="ydpa3d3daa2yiv5316436559" rel="nofollow" target="_blank">http://heaveneverywhere.com/Reflections</a></span></u></div><div style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;line-height:normal;font-size:16px;" class="ydpa3d3daa2yiv5316436559"><span style="color:rgb(0, 0, 0);font-size:16px;font-style:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;"><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span style="color:rgb(0, 0, 0);font-size:11px;font-style:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-transform:none;white-space:normal;word-spacing:0px;"><span><span><span><span style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:16px;orphans:2;widows:2;"><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span style="font-size:11px;" class="ydpa3d3daa2yiv5316436559"><span><span><span><span><span><span><span><span><span><div style="color:rgb(0, 0, 0);font-style:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:16px;" class="ydpa3d3daa2yiv5316436559"><span style="border-collapse: separate;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="border-collapse: separate; color: rgb(0, 0, 0); letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="ydpa3d3daa2yiv5316436559Apple-style-span"><span style="color:rgb(0, 0, 0);letter-spacing:normal;line-height:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;"><span><span><span><span><span><span><span><span><span><span><span><span><span><span><div style="color:rgb(0, 0, 0);letter-spacing:normal;line-height:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;" class="ydpa3d3daa2yiv5316436559"><span style="font-size:11px;"><br class="ydpa3d3daa2yiv5316436559"></span></div><div style="color:rgb(0, 0, 0);letter-spacing:normal;line-height:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;" class="ydpa3d3daa2yiv5316436559"><span style="font-size:11px;" class="ydpa3d3daa2yiv5316436559">--</span></div><div style="color:rgb(0, 0, 0);letter-spacing:normal;line-height:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;" class="ydpa3d3daa2yiv5316436559"><span style="font-size:11px;" class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></span></div></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></div></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></div><br style="color:rgb(0, 0, 0);font-size:11px;font-style:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;text-decoration:none;" class="ydpa3d3daa2yiv5316436559Apple-interchange-newline"><br class="ydpa3d3daa2yiv5316436559Apple-interchange-newline">
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></div>
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></font></div><div><br class="ydpa3d3daa2yiv5316436559"><blockquote type="cite" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">On Jul 16, 2022, at 2:51 AM, Luciano Notarfrancesco via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" class="ydpa3d3daa2yiv5316436559" rel="nofollow" target="_blank">cuis-dev@lists.cuis.st</a>> wrote:</div><br class="ydpa3d3daa2yiv5316436559Apple-interchange-newline"><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">Hola!</div><div class="ydpa3d3daa2yiv5316436559">Interesting. Actually methods written like this look more complicated than the original Smalltalk-80 syntax to me, but it’s an interesting idea, maybe looks complicated just because I’m not used to it. Let us know how it goes.</div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559">Note that in Cuis #: is a valid binary message. I use it, maybe I’m the only one who uses it.</div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559">Another idea we discussed before was to compile ‘f(x)’ as ‘f value: x’. Note that this is not ambiguous with Smalltalk-80. We could also compile ‘a[i]’ as ‘a at: i’. I’m not sure if it’s worth to complicate the Smalltalk-80 syntax with things like this, tho, I also value simplicity.<br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559gmail_quote"><div dir="ltr" class="ydpa3d3daa2yiv5316436559gmail_attr">On Sat, 16 Jul 2022 at 01:39 Francisco Garau via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" class="ydpa3d3daa2yiv5316436559" rel="nofollow" target="_blank">cuis-dev@lists.cuis.st</a>> wrote:<br class="ydpa3d3daa2yiv5316436559"></div><blockquote style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204);" class="ydpa3d3daa2yiv5316436559gmail_quote"><div dir="ltr" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">Hola Amigos -- just wanted to share with you some ideas I've been thinking about for a while. </div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559">It all started when someone mentioned the colon in the syntax for block arguments could have whitespace around the argument so that you could write  <font face="monospace" style="font-family:monospace;" class="ydpa3d3daa2yiv5316436559">[ : n | n + 1] </font></div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559">It makes perfect sense to see the block as an "inlined" method that doesn't require any method-lookup; therefore, the selector is superfluous. But if we accepted the selector inside the block, it could be used as the variable holding the block. So, instead of writing <font face="monospace" style="font-family:monospace;" class="ydpa3d3daa2yiv5316436559">succ := [:n | n + 1]</font>  we could write  <font face="monospace" style="font-family:monospace;" class="ydpa3d3daa2yiv5316436559">[succ: n | n + 1]</font>  </div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559">Even better if the block evaluation accepts #: as a valid selector.  So you could write <font face="monospace" style="font-family:monospace;" class="ydpa3d3daa2yiv5316436559">(succ: 3) = 4</font> instead of <font face="monospace" style="font-family:monospace;" class="ydpa3d3daa2yiv5316436559">(succ value: 3) = 4</font>. </div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559">A short example will make this clear. </div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">Vanilla Smalltalk</div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">succ := [:n | n + 1].</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">(succ value: 3) = 4. </div></blockquote><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559">Extended Block Syntax</div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">[succ: n | n + 1]. </div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">(succ: 3 ) = 4. </div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">"the above is equivalent to" </div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">(succ perform: #: with: 3) = 4. </div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div></blockquote><div class="ydpa3d3daa2yiv5316436559">Being able to parse blocks with these syntax paves the way to unify the syntax for method definition—for example, a few hypothetical methods from the Point class. <br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">"Point class>x:y:" </div></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">[x: xInteger y: yInteger | </div></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">   ^self basicNew setX: xInteger setY: yInteger].</div></div></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">"Point>>abs"</div></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">[abs | </div></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">   ^x abs @ y abs]. </div></div></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">"Point>>extent:" </div></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">[extent: aPoint |</div></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">   ^Rectangle origin: self extent: aPoint] </div></div></blockquote></blockquote><div class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div></div><div class="ydpa3d3daa2yiv5316436559">Of course, it gets trickier when blocks have more than one argument.. <br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">[add: a to: b | a + b]. </div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">(add_to value: 3 value: 4) = 7. "old style block evaluation" </div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559">(add: 3 to: 4) = 7. </div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div></blockquote></div><div class="ydpa3d3daa2yiv5316436559">I think building a separate Parser is a sensible approach -- is there a Smalltalk Parser as a separate package that can be tweaked without affecting the running image?<br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559">Thanks,</div><div class="ydpa3d3daa2yiv5316436559">Francisco</div></div><div dir="ltr" class="ydpa3d3daa2yiv5316436559"><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div><div class="ydpa3d3daa2yiv5316436559"><br class="ydpa3d3daa2yiv5316436559"></div></div>
-- <br class="ydpa3d3daa2yiv5316436559">
Cuis-dev mailing list<br class="ydpa3d3daa2yiv5316436559">
<a href="mailto:Cuis-dev@lists.cuis.st" class="ydpa3d3daa2yiv5316436559" rel="nofollow" target="_blank">Cuis-dev@lists.cuis.st</a><br class="ydpa3d3daa2yiv5316436559">
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" class="ydpa3d3daa2yiv5316436559" rel="nofollow" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br class="ydpa3d3daa2yiv5316436559">
</blockquote></div></div>
-- <br class="ydpa3d3daa2yiv5316436559">Cuis-dev mailing list<br class="ydpa3d3daa2yiv5316436559"><a href="mailto:Cuis-dev@lists.cuis.st" class="ydpa3d3daa2yiv5316436559" rel="nofollow" target="_blank">Cuis-dev@lists.cuis.st</a><br class="ydpa3d3daa2yiv5316436559">https://lists.cuis.st/mailman/listinfo/cuis-dev<br class="ydpa3d3daa2yiv5316436559"></div></blockquote></div><br class="ydpa3d3daa2yiv5316436559"></div></div></div>-- <br>Cuis-dev mailing list<br><a href="mailto:Cuis-dev@lists.cuis.st" rel="nofollow" target="_blank">Cuis-dev@lists.cuis.st</a><br><a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="nofollow" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br></div>
            </div>
        </div></body></html>