<div dir="ltr">wow, I did not know about those changes in Squeak and Pharo...<div>Anyway, for me the least surprising behavior is the original one, it is what most of the people will expect to happen.</div><div>I understand the consistency of the proposed behavior, but as I said before, it is an edge case that deserves special treatment.</div><div><br></div><div>Cheers!</div><div>Hernan.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 13, 2022 at 12:32 PM Martin McClure <<a href="mailto:martin@hand2mouse.com">martin@hand2mouse.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<div>
<blockquote type="cite">
<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>
</blockquote>
<br>
If compatibility is desirable, the ANSI spec is often (but not
always) a good guide.<br>
<br>
As far as Squeak-descendant Smalltalks, for "1@-2" Squeak puts up
a warning about "ambiguous selector" and asks you to choose which
interpretation to use. Pharo interprets "1@-2" as a send of #'@-'.
So this change would seem to make Cuis *more* compatible than the
original behavior.<br>
<br>
And it gets rid of the special-casing of $- in binary selectors,
which increases the simplicity and regularity of the language,
some of the characteristics that are so great about Smalltalk.<br>
<br>
Regards,<br>
-Martin<br>
<br>
On 5/13/22 08:02, Hernan Wilkinson via Cuis-dev wrote:<br>
</div>
<blockquote type="cite">
<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="gmail_quote">
<div dir="ltr" class="gmail_attr">On Fri, May 13, 2022 at 11:38
AM Luciano Notarfrancesco <<a href="mailto:luchiano@gmail.com" target="_blank">luchiano@gmail.com</a>>
wrote:<br>
</div>
<blockquote class="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="gmail_quote">
<div dir="ltr" class="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="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<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" style="font-family:monospace" target="_blank">www.cuis-smalltalk.org</a>
<a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" style="font-family:monospace" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a href="https://github.com/jvuletich" style="font-family:monospace" target="_blank">https://github.com/jvuletich</a>
<a href="https://www.linkedin.com/in/juan-vuletich-75611b3" style="font-family:monospace" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
<a href="https://independent.academia.edu/JuanVuletich" style="font-family:monospace" target="_blank">https://independent.academia.edu/JuanVuletich</a>
<a href="https://www.researchgate.net/profile/Juan-Vuletich" style="font-family:monospace" target="_blank">https://www.researchgate.net/profile/Juan-Vuletich</a>
<a href="https://patents.justia.com/inventor/juan-manuel-vuletich" style="font-family:monospace" target="_blank">https://patents.justia.com/inventor/juan-manuel-vuletich</a>
<a href="https://twitter.com/JuanVuletich" style="font-family:monospace" target="_blank">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" style="font-family:monospace" target="_blank">www.cuis-smalltalk.org</a>
<a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" style="font-family:monospace" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a href="https://github.com/jvuletich" style="font-family:monospace" target="_blank">https://github.com/jvuletich</a>
<a href="https://www.linkedin.com/in/juan-vuletich-75611b3" style="font-family:monospace" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
<a href="https://independent.academia.edu/JuanVuletich" style="font-family:monospace" target="_blank">https://independent.academia.edu/JuanVuletich</a>
<a href="https://www.researchgate.net/profile/Juan-Vuletich" style="font-family:monospace" target="_blank">https://www.researchgate.net/profile/Juan-Vuletich</a>
<a href="https://patents.justia.com/inventor/juan-manuel-vuletich" style="font-family:monospace" target="_blank">https://patents.justia.com/inventor/juan-manuel-vuletich</a>
<a href="https://twitter.com/JuanVuletich" style="font-family:monospace" target="_blank">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" style="font-family:monospace" target="_blank">www.cuis-smalltalk.org</a>
<a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" style="font-family:monospace" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a href="https://github.com/jvuletich" style="font-family:monospace" target="_blank">https://github.com/jvuletich</a>
<a href="https://www.linkedin.com/in/juan-vuletich-75611b3" style="font-family:monospace" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
<a href="https://independent.academia.edu/JuanVuletich" style="font-family:monospace" target="_blank">https://independent.academia.edu/JuanVuletich</a>
<a href="https://www.researchgate.net/profile/Juan-Vuletich" style="font-family:monospace" target="_blank">https://www.researchgate.net/profile/Juan-Vuletich</a>
<a href="https://patents.justia.com/inventor/juan-manuel-vuletich" style="font-family:monospace" target="_blank">https://patents.justia.com/inventor/juan-manuel-vuletich</a>
<a href="https://twitter.com/JuanVuletich" style="font-family:monospace" target="_blank">https://twitter.com/JuanVuletich</a></pre>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">
<div dir="ltr"><span style="font-size:xx-small;border-collapse:collapse">
<div style="font-size:small"><a href="https://10pines.com/" style="font-family:Roboto,Helvetica,Arial,sans-serif;font-size:medium" target="_blank"><img src="https://10pines.github.io/email-signature/10pines-firma@2x.png" style="margin-bottom: 0.5em;" width="108"></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>
<br>
<fieldset></fieldset>
</blockquote>
<br>
</div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><span style="font-size:xx-small;border-collapse:collapse"><div style="font-size:small"><a href="https://10pines.com/" style="font-family:Roboto,Helvetica,Arial,sans-serif;font-size:medium" target="_blank"><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>