<div dir="ltr">I&#39;ve followed this for a long time and work a lot with number/big num related code, and I must say I&#39;m really excited about the way this is turning out!<br><div><br></div><div><b>Popcount &amp; leadingZeroBits</b></div><div>- <i>Placement:</i> What&#39;s the rationale behind placing popcount &amp; clz on fixed width integer instead of BinaryInteger? It seems implementing these would be trivial also for BigInt types.</div><div>- <i>Naming: W</i>hy does <font face="monospace, monospace">popcount</font> retain the term of art? Considering it&#39;s relatively obscure it would seem <font face="monospace, monospace">numberOfOneBits</font> or something along those lines would be a more consistent choice. Also, arguably shouldn&#39;t it be <font face="monospace, monospace">numberOfLeadingZeroBits</font>?</div><div>I&#39;m very happy with the inclusion of exposing these instructions btw, I&#39;ve run into them lacking more than once before!<br></div><div><br></div><div><b>FullWidth &amp; ReportingOverflow</b></div><div>That&#39;s pretty clever there with the trailing argument :). Do you know whether there is any technical reason why we couldn&#39;t support a trailing &#39;argument label&#39; without actual argument directly in the language? If not I might want to write up a proposal for that because if run into wanting this for a longer time. E.g. delegate methods would be a very common case: <font face="monospace, monospace">tableView(_:numberOfSections)</font> <wbr>is a lot more consistent with all other delegate methods.</div><div><br></div><div><b>Division on Number?</b></div><div>The intro of the proposal puts division under Number, while the detailed design puts it under BinaryInteger, which is it?</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 22, 2017 at 7:39 AM, Max Moiseev via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><span><blockquote type="cite"><div>On Feb 18, 2017, at 12:02 PM, Karl Wagner via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br class="m_5331673711335459129m_-5714285844615251330Apple-interchange-newline"><div><span style="font-family:Helvetica;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">I assume the “SignedNumber” protocol is the same as the existing one in the standard library. That is to say, Strideable.Stride will now conform to Number and have operators.</span><br style="font-family:Helvetica;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"></div></blockquote></span>SignedNumber will *not* be the same. It is just the same name.</div><div>Stride will have operators, yes. Strideable in general will not, unless it’s a _Pointer. (you can find the current implementation prototype <a href="https://github.com/apple/swift/blob/new-integer-protocols/stdlib/public/core/Stride.swift.gyb" target="_blank">here</a>).<span><br><blockquote type="cite"><div><br style="font-family:Helvetica;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><span style="font-family:Helvetica;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">Also minor nitpick, would it be too onerous to require Number.Magnitude to be Comparable? Currently it’s only Equatable and ExpressibleByIntegerLiteral.</span></div></blockquote></span>Magnitude is supposed to conform to Arithmetic (or Number, or whatever it ends up being called), but the recursive constraints feature is missing, therefore we constrained it with the protocols that Arithmetic itself refines.</div><div><br></div><div>Why would you want Comparable?</div><div><br></div><div>Max</div><br></div><br>______________________________<wbr>_________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a><br>
<br></blockquote></div><br></div></div>