I share your concern about trailingZeros and leadingZeros; those could probably be improved as trailingZeroBits and leadingZeroBits. The terms of art there, ctz (&quot;count trailing zeros&quot;) and clz, are a bit cryptic but perhaps also fine if ulp is acceptable for FloatingPoint.<br><br><br><br><div class="gmail_quote"><div dir="ltr">On Sun, Jan 29, 2017 at 22:42 Brent Royal-Gordon via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&gt; On Jan 29, 2017, at 7:02 PM, Dave Abrahams via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;&gt;&gt;  var popcount: Int { get }<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; I&#39;m not super-fond of this name; I assume it&#39;s a term of art, but it&#39;s<br class="gmail_msg">
&gt;&gt; a pretty obscure one. Maybe `numberOfOnes`? `onesWithin`?<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; Yes, the rationale is that it&#39;s a term of art.  I think if you were<br class="gmail_msg">
&gt; going to call it something else, you&#39;d need to mention &quot;one _bits_&quot; in<br class="gmail_msg">
&gt; the name.  If we can come up with a name that&#39;s obviously better, that&#39;s<br class="gmail_msg">
&gt; great, but lacking a clear winner we should go with the already-accepted<br class="gmail_msg">
&gt; term.<br class="gmail_msg">
<br class="gmail_msg">
Okay, but the same could be said for `trailingZeros`. Does that also need to be something like `trailingZerosInBinaryRepresentation` or what-have-you?<br class="gmail_msg">
<br class="gmail_msg">
&gt;&gt; It might make a great deal of sense to support bitwise operations on<br class="gmail_msg">
&gt;&gt; this type,<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; I think that&#39;s a model of SetAlgebra, then, isn&#39;t it?<br class="gmail_msg">
<br class="gmail_msg">
Hmm, arguably. It&#39;s a shame that we won&#39;t be able to use it with things like `OptionSet`, though.<br class="gmail_msg">
<br class="gmail_msg">
&gt; Personally I don&#39;t think the strict separation of SetAlgebra and things<br class="gmail_msg">
&gt; that do bitwise operations makes sense, but I know some people feel<br class="gmail_msg">
&gt; strongly that it would be confusing for users to expose set operations<br class="gmail_msg">
&gt; with bitwise operator names.  IMO using | for union and &amp; for<br class="gmail_msg">
&gt; intersection would be beautiful.  But that&#39;s a story for another day...<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
Honestly, if I were designing Swift from scratch, I might consider having a `BitView` type and `bits` member which acts as a collection of `Bool`s (or maybe a set of offsets of `1` bits?) and conforms to `SetAlgebra`; you could then perform bitwise operations through the `bits`, but not directly on the value itself. But that ship has clearly sailed.<br class="gmail_msg">
<br class="gmail_msg">
--<br class="gmail_msg">
Brent Royal-Gordon<br class="gmail_msg">
Architechies<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
swift-evolution mailing list<br class="gmail_msg">
<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg">
</blockquote></div>