<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Calibri Light";
        panose-1:2 15 3 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
        {mso-style-priority:1;
        margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi, I was wondering about the same a while ago and googled up the rationale behind the existing implementation might have been to keep Smalltalk an LL(1) language (could it also "really" explain why 3 + 4 * 5 is not 23 but 35?) ; so eventually
 I implemented @- under Number :)</p>
<p class="MsoNormal">Best,</p>
<p class="MsoNoSpacing"><span lang="CS">--</span></p>
<p class="MsoNoSpacing"><strong><span style="font-family:"Calibri Light",sans-serif;color:#333333;font-weight:normal">Jaromír Matas</span></strong><span style="font-family:"Calibri Light",sans-serif;color:#555555"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Cuis-dev <cuis-dev-bounces@lists.cuis.st> on behalf of Hernan Wilkinson via Cuis-dev <cuis-dev@lists.cuis.st><br>
<b>Sent:</b> Friday, May 13, 2022 5:02:16 PM<br>
<b>To:</b> Luciano Notarfrancesco <luchiano@gmail.com><br>
<b>Cc:</b> Hernan Wilkinson <hernan.wilkinson@10pines.com>; Juan Vuletich <JuanVuletich@zoho.com>; Discussion of Cuis Smalltalk <cuis-dev@lists.cuis.st>; Martin McClure <martin@hand2mouse.com><br>
<b>Subject:</b> Re: [Cuis-dev] Parser gets confused when using $| in binary selectors</font>
<div> </div>
</div>
<div>
<div dir="ltr">I would go back to the original behavior. if 1 @- 2 sends the message @- to 1 then that message will have to be implemented in Number to get the expected behavior, and that will happen with 1 *- 2 and 1 /- 2 and so on.
<div>This is a case where we have to be pragmatic and we have to prioritize how these messages are modeling the arithmetic of numbers.</div>
<div>For me, this is an example where a special case in the syntax makes it more easy to use, closer to the domain problem where those messages are used 99% of the time (mathematic) and that will generate the least number of surprises.</div>
<div>We already have problems explaining why 3 + 4 * 5 is not 23 but 35, I can not imagine myself explaining why 1@-2 is not the same as 1@- 2 </div>
<div>when -2 and - 2 are the same.</div>
<div>And also, I think we have to give credit to the people that defined this behavior a long (Dan Ingalls & co). For sure they had this same discussion and they decided to go this way for a reason, and the reason for me has to do with what I mentioned earlier.</div>
<div>Going back to the original behavior makes the behavior of these messages more natural and it will maintain compatibility with other Squeak descendant Smalltalks.</div>
<div><br>
</div>
</div>
<br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">On Fri, May 13, 2022 at 11:38 AM Luciano Notarfrancesco <<a href="mailto:luchiano@gmail.com">luchiano@gmail.com</a>> wrote:<br>
</div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="auto">Sounds good to me, but not a requirement for my use case, if you think it would complicate the parser you don’t need to do it (at least not for me).</div>
<div><br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">On Fri, 13 May 2022 at 9:31 PM Juan Vuletich <<a href="mailto:JuanVuletich@zoho.com" target="_blank">JuanVuletich@zoho.com</a>> wrote:<br>
</div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<u></u>
<div bgcolor="#ffffff">I'm pretty sure I can tweak the parser to treat specially $- as last char of a binary selector, so that<br>
<br>
1@-2 creates a Point.<br>
1 @ -2 also creates a Point.<br>
1 @- 2 (note the space between - and 2) sends #@-, whatever that might mean.<br>
<br>
I know it wouldn't be strictly ANSI, but that shouldn't be too important.<br>
<br>
Do you folks think this would be reasonable behavior?<br>
<br>
Thanks,</div>
<div bgcolor="#ffffff"><br>
<br>
On 5/13/2022 11:07 AM, Luciano Notarfrancesco via Cuis-dev wrote:
<blockquote type="cite">
<div>Can you think of other characters that could be problematic when allowing them in binary selectors? I don’t use selectors ending with $-, and I agree that the original behavior is more convenient and intuitive. The only disadvantage of keeping the original
 behavior for this case would be not being ANSI compliant, not a problem for me.</div>
<div><br>
<div>
<div>On Fri, 13 May 2022 at 8:58 PM Luciano Notarfrancesco <<a href="mailto:luchiano@gmail.com" target="_blank">luchiano@gmail.com</a>> wrote:<br>
</div>
<blockquote>
<div>Personally I don’t mind if we decide to make an exception for the special case of $-, but only for that character, because I want to have more options available for binary operators (for example with $|).</div>
<div><br>
</div>
<div>
<div>
<div>On Fri, 13 May 2022 at 8:53 PM Hernan Wilkinson <<a href="mailto:hernan.wilkinson@10pines.com" target="_blank">hernan.wilkinson@10pines.com</a>> wrote:<br>
</div>
<blockquote>
<div>Even more... this change makes things like: 1*-2 or 1/-2 or 1//-2 or 1+-2, etc etc etc to generate an error.<br>
<div>I think it does not make sense.... any common programmer will expect 1*-2 to return -2 and not an error.</div>
<div>I think we should get back to the previous behavior.</div>
<div><br>
</div>
<div>What do you think?</div>
</div>
<div>
<div><br>
</div>
<div>Hernan.</div>
</div>
<br>
<div>
<div>On Fri, May 13, 2022 at 10:34 AM Hernan Wilkinson <<a href="mailto:hernan.wilkinson@10pines.com" target="_blank">hernan.wilkinson@10pines.com</a>> wrote:<br>
</div>
<blockquote>
<div>Hi all!
<div> I'm just wondering why you guys think that having @- as a unary selector is better than interpreting it as valid for a negative y of a point... </div>
<div> I mean, it is much more common to write 1@-1 as a point whose y is -1 than to use @- as a selector...</div>
<div> Newcomers will have bit time problems to understand why 1@-1 does not generate a point with a -1 as the y, unless the @- message is implemented in Point to create a point with the negation of the parameter which is for me an unnecessary indirection...</div>
<div> I mean, what other class is going to implement a message such as @- ? </div>
<div> It seems to me more useful the behavior we had previous to this change.</div>
<div><br>
</div>
<div>Hernan.</div>
<div> </div>
</div>
<br>
<div>
<div>On Fri, May 13, 2022 at 9:52 AM Luciano Notarfrancesco via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> wrote:<br>
</div>
<blockquote>
<div>If you don't mind, I think these printOns look better (either one)</div>
<br>
<div>
<div>On Fri, May 13, 2022 at 2:36 AM Luciano Notarfrancesco <<a href="mailto:luchiano@gmail.com" target="_blank">luchiano@gmail.com</a>> wrote:<br>
</div>
<blockquote>
<div>Oh, great, thanks! I was just thinking that “1@(-1)” could have been a better choice for the fix, and that maybe we should have a preference to avoid overwriting timestamp and other people’s initials when we do trivial changes like this.</div>
<div><br>
</div>
<div><br>
<div>
<div>On Fri, 13 May 2022 at 3:41 AM Juan Vuletich <<a href="mailto:JuanVuletich@zoho.com" target="_blank">JuanVuletich@zoho.com</a>> wrote:<br>
</div>
<blockquote>
<div>Thanks Folks!<br>
<br>
Luciano, I just pushed your changes. I also found an instance of '\\-' that I fixed too. There are several changes required for optional packages in the Cuis-Smalltalk organization. Will push them tomorrow.<br>
<br>
WRT to Decompiler, decompiled code is actually OK, with a space after binary selectors. What was wrong was the #storeString of literal Points. Fixed Point>>#printOn: for that. Now DecompilerTests pass.<br>
<br>
Cheers!</div>
<div><br>
<br>
On 5/9/2022 3:21 PM, Luciano Notarfrancesco via Cuis-dev wrote:
<blockquote type="cite">
<div>Martin,
<div>Thanks for the very detailed explanation! I went ahead and replaced '@-' with '@ -' in the image and the tests. There are still 10 tests producing errors because the decompiler decompiles it without the space, tho.</div>
<div><br>
</div>
</div>
<br>
<div>
<div>On Mon, May 9, 2022 at 5:04 PM Martin McClure <<a href="mailto:martin@hand2mouse.com" target="_blank">martin@hand2mouse.com</a>> wrote:<br>
</div>
<blockquote>
<div>
<div>The ANSI Smalltalk grammar says that "@-" should be a valid binary selector, and would require whitespace in "1@ -1" to interpret the argument as a literal negative one.<br>
<br>
The Blue Book grammar, though, does not allow "@-" as a binary selector. The Blue Book grammar, as printed, also does not allow "," as a binary selector, even though that was clearly used as a binary selector in Smalltalk-80. The Blue Book grammar also does
 not talk about whitespace at all, even though that is clearly required in some places, so the Blue Book is a bit fuzzier than one would want as a grammar reference.<br>
<br>
Going with ANSI-like grammar and putting a space in expressions like "1 @- 1" makes more sense to me. Allows more valid selectors, and the code is more readable with the whitespace.<br>
<br>
Regards,<br>
-Martin <br>
<br>
On 5/9/22 03:48, Luciano Notarfrancesco via Cuis-dev wrote:<br>
</div>
<blockquote type="cite">
<div>After this change '1@-1' is parsed as a binary message #@-, and this causes some base image tests to fail. Should we add a space between @ and -1 or should we fix the parser?</div>
<br>
<div>
<div>On Fri, May 6, 2022 at 1:56 PM Luciano Notarfrancesco <<a href="mailto:luchiano@gmail.com" target="_blank">luchiano@gmail.com</a>> wrote:<br>
</div>
<blockquote>
<div>That was quick. Thanks a lot!</div>
<div><br>
<div>
<div>On Fri, 6 May 2022 at 8:55 PM Juan Vuletich <<a href="mailto:JuanVuletich@zoho.com" target="_blank">JuanVuletich@zoho.com</a>> wrote:<br>
</div>
<blockquote>
<div>On 5/6/2022 10:48 AM, Luciano Notarfrancesco via Cuis-dev wrote:
<blockquote type="cite">
<div>I’m not sure I was clear, I meant a method implementing those messages, not sending those messages.</div>
<div><br>
</div>
<div>
<div>
<div>On Fri, 6 May 2022 at 1:22 PM Luciano Notarfrancesco <<a href="mailto:luchiano@gmail.com" target="_blank">luchiano@gmail.com</a>> wrote:<br>
</div>
<blockquote>I’m getting “Argument name expected” when trying to compile a method with selector <|. On the other hand, |>, | and || all compile fine as binary selectors, but || breaks syntax highlighting.
</blockquote>
</div>
</div>
</blockquote>
<br>
</div>
<div>Sure. Fixes at GitHub now.<br>
<br>
A small detail: Now an empty temporal declaration `||` is parsed as a binary selector, and therefore marked as invalid. Not a big deal. We'd just remove any such.<br>
<br>
Cheers,<br>
<pre style="font-family:monospace">-- 
Juan Vuletich
<a href="http://www.cuis-smalltalk.org" target="_blank" style="font-family:monospace">www.cuis-smalltalk.org</a>
<a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" target="_blank" style="font-family:monospace">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a href="https://github.com/jvuletich" target="_blank" style="font-family:monospace">https://github.com/jvuletich</a>
<a href="https://www.linkedin.com/in/juan-vuletich-75611b3" target="_blank" style="font-family:monospace">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
<a href="https://independent.academia.edu/JuanVuletich" target="_blank" style="font-family:monospace">https://independent.academia.edu/JuanVuletich</a>
<a href="https://www.researchgate.net/profile/Juan-Vuletich" target="_blank" style="font-family:monospace">https://www.researchgate.net/profile/Juan-Vuletich</a>
<a href="https://patents.justia.com/inventor/juan-manuel-vuletich" target="_blank" style="font-family:monospace">https://patents.justia.com/inventor/juan-manuel-vuletich</a>
<a href="https://twitter.com/JuanVuletich" target="_blank" style="font-family:monospace">https://twitter.com/JuanVuletich</a></pre>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
<br>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
<br>
<pre style="font-family:monospace">-- 
Juan Vuletich
<a href="http://www.cuis-smalltalk.org" target="_blank" style="font-family:monospace">www.cuis-smalltalk.org</a>
<a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" target="_blank" style="font-family:monospace">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a href="https://github.com/jvuletich" target="_blank" style="font-family:monospace">https://github.com/jvuletich</a>
<a href="https://www.linkedin.com/in/juan-vuletich-75611b3" target="_blank" style="font-family:monospace">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
<a href="https://independent.academia.edu/JuanVuletich" target="_blank" style="font-family:monospace">https://independent.academia.edu/JuanVuletich</a>
<a href="https://www.researchgate.net/profile/Juan-Vuletich" target="_blank" style="font-family:monospace">https://www.researchgate.net/profile/Juan-Vuletich</a>
<a href="https://patents.justia.com/inventor/juan-manuel-vuletich" target="_blank" style="font-family:monospace">https://patents.justia.com/inventor/juan-manuel-vuletich</a>
<a href="https://twitter.com/JuanVuletich" target="_blank" style="font-family:monospace">https://twitter.com/JuanVuletich</a></pre>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote>
</div>
<br>
<div><br>
</div>
-- <br>
<div>
<div><span>
<div><a href="https://10pines.com/" target="_blank"><img></a><span></span>
<h1>Hernán Wilkinson</h1>
<h2>Software Developer & Coach</h2>
<p>Alem 896, Floor 6, Buenos Aires, Argentina</p>
<p>+54 11 6091 3125</p>
<p>@HernanWilkinson</p>
</div>
</span></div>
</div>
</blockquote>
</div>
<br>
<div><br>
</div>
-- <br>
<div>
<div><span>
<div><a href="https://10pines.com/" target="_blank"><img></a><span></span>
<h1>Hernán Wilkinson</h1>
<h2>Software Developer & Coach</h2>
<p>Alem 896, Floor 6, Buenos Aires, Argentina</p>
<p>+54 11 6091 3125</p>
<p>@HernanWilkinson</p>
</div>
</span></div>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
<br>
<br>
<pre cols="72" style="font-family:monospace">-- 
Juan Vuletich
<a href="http://www.cuis-smalltalk.org" target="_blank" style="font-family:monospace">www.cuis-smalltalk.org</a>
<a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" target="_blank" style="font-family:monospace">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a href="https://github.com/jvuletich" target="_blank" style="font-family:monospace">https://github.com/jvuletich</a>
<a href="https://www.linkedin.com/in/juan-vuletich-75611b3" target="_blank" style="font-family:monospace">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
<a href="https://independent.academia.edu/JuanVuletich" target="_blank" style="font-family:monospace">https://independent.academia.edu/JuanVuletich</a>
<a href="https://www.researchgate.net/profile/Juan-Vuletich" target="_blank" style="font-family:monospace">https://www.researchgate.net/profile/Juan-Vuletich</a>
<a href="https://patents.justia.com/inventor/juan-manuel-vuletich" target="_blank" style="font-family:monospace">https://patents.justia.com/inventor/juan-manuel-vuletich</a>
<a href="https://twitter.com/JuanVuletich" target="_blank" style="font-family:monospace">https://twitter.com/JuanVuletich</a></pre>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr" class="x_gmail_signature">
<div dir="ltr"><span style="font-size:xx-small; border-collapse:collapse">
<div style="font-size:small"><a href="https://10pines.com/" target="_blank" style="font-family:Roboto,Helvetica,Arial,sans-serif; font-size:medium"><img width="108" src="https://10pines.github.io/email-signature/10pines-firma@2x.png" style="margin-bottom:0.5em"></a><span style="color:rgb(0,0,0); font-family:Roboto,Helvetica,Arial,sans-serif; font-size:medium"></span>
<h1 style="margin:0px; font-size:14px">Hernán Wilkinson</h1>
<h2 style="margin:0px 0px 1em; font-size:14px; color:rgb(100,100,100)">Software Developer & Coach</h2>
<p style="margin:0px; color:rgb(100,100,100); font-size:12px">Alem 896, Floor 6, Buenos Aires, Argentina</p>
<p style="margin:0px; color:rgb(100,100,100); font-size:12px">+54 11 6091 3125</p>
<p style="margin:0px; color:rgb(100,100,100); font-size:12px">@HernanWilkinson</p>
</div>
</span></div>
</div>
</div>
</body>
</html>