<html><body><div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:12pt"><div><span>Unlike your example, writeln = "hello" is actually valid, correct code.  That is, it's not utterly stupid, it's just utterly ugly (to you and me).  If someone wants to call writeln that way because they like the "style", then that's their choice.  I see no difference from what you propose.<br></span></div><div><br></div><div>It's not about the compiler rejecting terrible code because it thinks the code is terrible, it's about the compiler rejecting terrible code because the library author thinks it's terrible.  That is, the library author can decide how you should use their code, just like he decides which functions are private and public.</div><div><br></div><div>I understand your frustration for having existing code break.  All I can offer is at least the broken code will provide an error and line
 number where you can fix it.</div><div><br></div><div>There are many people who refuse to move to D2 because of the const semantics.  They say "my code works fine without const, I don't see why I should have to change it.  D2 const sucks!"  But const can be a very useful thing *if* you use it correctly.  So it's a tradeoff.  I feel the property syntax as it currently stands is out of control, bug prone, and needs to be reined in.  You feel it's just what you need, and you use it to great effect.  Nobody is 100% right, but with strict properties, things look better because you have the freedom to name your methods without worry that they are misused.  I see it as a huge gain.</div><div><br></div><div>I also don't like the new operator overloading scheme in D2, since there are oodles of problems with template methods and classes, but they are much more powerful than the old method.  Since the old methods are
 unofficially still there, I have something to fall back on for dcollections, but I expect some day to have to drop all references to the old operator overloading functions.  Is it frustrating?  Yes.  Does it seem pointless?  Yes.  But my single opinion and my library cannot be the reason that an obviously better system isn't adopted.<br></div><div><br></div><div><span>-Steve<br></span></div><div><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><div style="font-family: arial,helvetica,sans-serif; font-size: 12pt;"><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><font face="Arial" size="2"><hr size="1"><b><span style="font-weight: bold;">From:</span></b> David Simcha <dsimcha@gmail.com><br><b><span style="font-weight: bold;">To:</span></b> Discuss the phobos library for D <phobos@puremagic.com><br><b><span style="font-weight:
 bold;">Sent:</span></b> Friday, April 22, 2011 3:39 PM<br><b><span style="font-weight: bold;">Subject:</span></b> Re: [phobos] Time to get ready for the next release<br></font><br>
<meta http-equiv="x-dns-prefetch-control" content="off"><div id="yiv1911785980"><br><br><div class="yiv1911785980gmail_quote">On Fri, Apr 22, 2011 at 3:26 PM, Steve Schveighoffer <span dir="ltr"><<a rel="nofollow" ymailto="mailto:schveiguy@yahoo.com" target="_blank" href="mailto:schveiguy@yahoo.com">schveiguy@yahoo.com</a>></span> wrote:<br><blockquote class="yiv1911785980gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
 Like it or not, the same thing applies to things like:<br>
<br>
writeln = "hello";<br>
<br>
Even though we know this is not the right way to call it, the compiler doesn't give an error to enforce the semantics.<br>
<font color="#888888"><br>
<br>
-Steve</font><br></blockquote></div><br>Ok, but just because you can do something utterly stupid like this doesn't mean you should.  You can also do the following even though it's a terrible idea, because it's impossible for the compiler to reject every terrible idea without rejecting some good ideas:<br>
<br><span style="font-family: courier new,monospace;">import std.random;</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">// Overwrite random memory locations with random data until the program</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">// crashes</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">void main() {</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    while(true) {</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">         auto num = uniform(0, int.max);</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">         auto ptr = cast(int*) num;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">         *ptr = uniform(0, int.max);</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    }</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">}</span><br style="font-family: courier new,monospace;"><br>Again, I'd be more sympathetic to your point of view if making these changes didn't also break existing code.  For me this is the tiebreaker.  I have already designed a whole API around methods-as-properties.  I'm sure having tons of code break will be very aggravating to a lot of people.  Given the weak arguments put forth in favor of strict semantics, I can't bring myself to say that breaking not only existing code but whole existing API designs is justified.<br>
<br>BTW, as far as your argument about static typing, this may be a fundamental disagreement between us.  I don't like static typing, but consider it a necessary evil in exchange for performance and the ability to do low-level work.  Therefore, I want only as much static typing as is necessary for these to be possible.<br>
</div><meta http-equiv="x-dns-prefetch-control" content="on"><br>_______________________________________________<br>phobos mailing list<br><a ymailto="mailto:phobos@puremagic.com" href="mailto:phobos@puremagic.com">phobos@puremagic.com</a><br><a href="http://lists.puremagic.com/mailman/listinfo/phobos" target="_blank">http://lists.puremagic.com/mailman/listinfo/phobos</a><br><br></div></div></blockquote></div></div></body></html>