<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">—&nbsp;</div><div class="">Daryle Walker<br class="">Mac, Internet, and Video Game Junkie<br class="">darylew AT mac DOT com&nbsp;</div></div>
</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Jul 12, 2017, at 4:30 PM, Gor Gyolchanyan &lt;<a href="mailto:gor@gyolchanyan.com" class="">gor@gyolchanyan.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">I agree, given the current state of Swift, fixed-sized arrays are way too magical.</div></div></div></blockquote><div><br class=""></div><div>Any more “magical” than the existing primitive types?</div><div><br class=""></div><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">I’d suggest postponing the idea of fixed-sized arrays (even though I myself have ached for them for a long time now) until its prerequisites are met.</div><div class=""><br class=""></div><div class="">There are three language features that have been discusses before that are required for this:</div><div class=""><ul class="MailOutline"><li class="">Variadic generic parameters.</li><li class="">Tuples as nominal types with a variadic generic parameter and a tuple concatenation ability.</li><li class="">Non-type generic parameters (probably, only compile-time value types).</li></ul></div></div></div></blockquote><div><br class=""></div><div>Improved generics would synergize with fixed-size arrays, but are not a prerequisite.</div><div><br class=""></div><div>Wouldn’t nominal tuples be structures? Not that it matters here since FSAs aren’t quirky tuples. (I mentioned in the proposal that no language that I know of does this; homogenous and heterogenous product types are always distinct kinds of types.)</div><div><br class=""></div><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">In these terms, a fixed-sized array would be a type that takes an <font face="PT Mono" color="#009051" class="">Int</font> as a generic parameter and uses a variadic tuple for its storage. If C++ templates has taught us anything is that metaprogramming can be used for achieving fantastic compile-time wizardry, like converting a single integer generic parameter and a single generic type parameter &nbsp;to a generic homogeneous variadic type parameter (by using a recursively defined variadic parameter dummy type).</div></div></div></blockquote></div><br class=""><div class="">I thought Swift was to avoid that kind of wizardry. And unless you don’t want any of the optimizations array operations get, then the compiler has to analyze tuple types to trigger “array mode."</div></body></html>