<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2017-12-10 16:26 GMT+01:00 David T. Lewis <span dir="ltr"><<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Sun, Dec 10, 2017 at 11:09:04AM +0100, Nicolas Cellier wrote:<br>
> 2017-12-10 9:53 GMT+01:00 Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de">marcel.taeumel@hpi.de</a>>:<br>
><br>
> > So it comes down to what "being abstract" actually means in the<br>
> > environment. :-) I think it means #== considering the current VM and the<br>
> > role of classes. Not sure in a the generic, object-oriented sense, though.<br>
> ><br>
> > Best,<br>
> > Marcel<br>
> ><br>
> > Am 10.12.2017 00:02:06 schrieb Chris Muller <<a href="mailto:asqueaker@gmail.com">asqueaker@gmail.com</a>>:<br>
> > With objects you should delegate to the the receiver to decide what #=<br>
> > means -- which in most cases will inherit that default implementation from<br>
> > Object anyway.  Sending #== is generally bad form.<br>
> ><br>
> > Converting uses of #= to #== for "performance" is a bad idea except in the<br>
> > most inner, performance-critical code, and even then, it should be with a<br>
> > comment.<br>
> ><br>
> > Absolutely, if it's only for the sake of optimization, it's a bad decision.<br>
> Not to mention that isAbstract is not performance critical at all.<br>
><br>
> Maybe the intention is to really test for identity.<br>
> That's because we have the knowledge that classes are the unique instance<br>
> of their metaclass.<br>
> So using = could be seen as an un-necessary indirection.<br>
><br>
> Reducing the level of indirection may reduce complexity.<br>
> But it is also reducing extensibility as noted by Marcel.<br>
><br>
> But do we want to elimiate complexity at all?<br>
> I see this related to "complex versus complicated" and the original<br>
> biological analogy.<br>
> Are resilient/adptative systems necessarily complex?<br>
> If so, ideally such complex system should be built from simple<br>
> behavior/rules.<br>
> What we want to avoid if possible is complicated things.<br>
<br>
</div></div>Is one of these two approaches less complicated and easier to understand<br>
with respect to Environments? I don't know the answer, just asking.<br>
<br>
Dave<br>
<span class=""><br>
<br></span></blockquote><div>Hi David,</div><div>I don't think so.</div><div>Different environments may have different bindings, but those point on same class.</div><div>== suppress one level of indirection with implicit knowledge that classes are unique.</div><div>IMO = does not make things more complicated.<br></div><div>But such indirection might be useful only if one day someone start using copies of a class and give a new definition of =</div><div>That's hypothetical for now.<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
><br>
> Nicolas<br>
><br>
> ><br>
> > On Thu, Dec 7, 2017 at 2:30 AM, Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de">marcel.taeumel@hpi.de</a>><br>
> > wrote:<br>
> ><br>
> >> Hi, there.<br>
> >><br>
> >> What are your thoughts on how to implement "MyClass class >><br>
> >> #isAbstract"? I think that one should always use #== and compare it to an<br>
> >> actual class object like this:<br>
> >><br>
> >> MyClass class >> #isAbstract<br>
> >>    ^ self == MyClass<br>
> >><br>
> >> At the time of writing, we have various attempts in your image. You can<br>
> >> browse them easily:<br>
> >><br>
> >><br>
</span>> >> Best,<br>
> >> Marcel<br>
> >><br>
> >><br>
> >><br>
> >><br>
> ><br>
> ><br>
> ><br>
> ><br>
<br>
><br>
<br>
<br>
</blockquote></div><br></div></div>