<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Dec 11, 2013 at 5:17 PM, bearophile <span dir="ltr"><<a href="mailto:bearophileHUGS@lycos.com" target="_blank">bearophileHUGS@lycos.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Namespace:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Your gig: <a href="https://github.com/D-Programming-Language/dmd/pull/2952#discussion_r8288045" target="_blank">https://github.com/D-<u></u>Programming-Language/dmd/pull/<u></u>2952#discussion_r8288045</a><br>
</blockquote>
<br>
My enhancement request was for the array[$] syntax. The idea of []s was invented by someone else (Timothee Cour?).<br>
<br>
I like the practical comments by Hara. If Kenji thinks the []s is not useful for efficiency (because the efficiency can be obtained with just improvements of the compiler), then the []s syntax becomes less necessary.<br>

<br>
<br>
On the other hand this is an interesting use case that compiler improvements alone could not be enough to allow:<br>
<br>
void fun(int[3]) {}<br>
void main() {<br>
    int[3] x = [1, 2, 3];<br>
    fun(x); // OK<br>
    fun([1, 2, 3]); // error<br>
    fun([1, 2, 3]s); // OK<br>
}<br></blockquote><div><br></div><div>yes, that was the prime motivation for DIP34, being able to pass un-ambiguously a static array to a function without having to declare an intermediate variable first.</div><div><br></div>
<div>when fun() has overloads for both static and non-static arrays (or is just declared as fun(T)(T a) ), the compiler cannot guess whether fun([1,2,3]) asks for static or dynamic array, and probably has to assume dynamic array. And int[$] would require declaring a variable before passing it, eg: int[$]x=[1,2,3].</div>
<div><br></div><div>With [1,2,3]s, there is no ambiguity.</div><div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
<br>
Are vector ops supported?<br>
<br>
int[6] a;<br>
a = [1,2,3]s[] + [4,5,6]s[];<br>
<br>
DIP34 is still a draft, and it shows, some corner cases are missing in that document and need to be found, fleshed out and added to the DIP34.<br>
<br>
Bye,<br>
bearophile<br>
</blockquote></div><br></div></div>