<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif">
<p>Hi all,</p>
<p><br>
</p>
<p>Levente:</p>
<p><br>
</p>
<p></p>
<div>> Both #isNilOr: and #notNilAnd: return a boolean value. It is possible to <span style="font-size:12pt">use these methods and ignore their return values. E.g.:</span></div>
<div>> </div>
<div>> object ifNotNil: [ collection add: object ].</div>
<div>> </div>
<div>> can be written as:</div>
<div>> </div>
<div>> object isNilOr: [ collection add: object ].</div>
<div>> </div>
<div>> or as:</div>
<div>> </div>
<div>> object notNilAnd: [ collection add: object ].</div>
<div><br>
</div>
I see your point. However, I think this would be a client problem rather than a design problem. :-)
<p></p>
<p>The names tell you when you should send which message. Each selector has a different semantic that is also formed by its return value. If we neglected the return value, we could also critique the following:</p>
<p><br>
</p>
<p>aBoolean ifTrue: aBlock</p>
<p>can be written as:</p>
<p>aBoolean ==> aBlock</p>
<p><br>
</p>
<p>The return value is significant. Otherwise, you could compare the following:</p>
<p><span style="font-size:12pt">aCollection do: aBlock</span><br>
</p>
<p><span style="font-size:12pt">aCollection collect: aBlock</span></p>
<p><span style="font-size:12pt">aCollection select: aBlock</span></p>
<p><span style="font-size:12pt">...</span></p>
<p><span style="font-size:12pt"><br>
</span></p>
<p><span style="font-size:12pt">Eliot:</span></p>
<p><span style="font-size:12pt"><br>
</span></p>
<p><span style="font-size:12pt">I have to apologize, you're absolutely right on ProtoObject vs. Object. Back in December, I did not yet understand the actual idea of ProtoObject. I absolutely agree with you that any extension of this kind should go to Object
 instead.</span></p>
<p><span style="font-size:12pt"><br>
</span></p>
<p><span style="font-size:12pt">Best,</span></p>
<p><span style="font-size:12pt">Christoph</span></p>
<div id="x_Signature">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div name="x_divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div><font size="2" color="#808080"></font></div>
</div>
</div>
</div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Von:</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von Stéphane Rollandin <lecteur@zogotounga.net><br>
<b>Gesendet:</b> Sonntag, 22. März 2020 09:03:42<br>
<b>An:</b> squeak-dev@lists.squeakfoundation.org<br>
<b>Betreff:</b> Re: [squeak-dev] #isNilOr:, #notNilAnd:</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">> The whole point of ProtoObject is to support transparent proxies that
<br>
> raise doesNotUnderstand: when sent any message. All the protocol in <br>
> ProtoObject other than doesNotUnderstand: is a colossal mistake and the <br>
> result of serious misunderstanding of the utility and implementation of <br>
> transparent forwarders.<br>
<br>
+1<br>
<br>
Stef<br>
<br>
<br>
</div>
</span></font>
</body>
</html>