Another use case: I&#39;ve got a BitArray that makes sense to conform to BitwiseOperations, but it definitely isn&#39;t a FixedWidthInteger.<br><br><br><div class="gmail_quote"><div dir="ltr">On Wed, Jul 6, 2016 at 17:56 Max Moiseev 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">OptionSets do conform to AlgebraSet but they require raw value type to conform to BitwiseOperations.<br>
<br>
Max<br>
<br>
&gt; On Jul 6, 2016, at 3:44 PM, Jordan Rose &lt;<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Option sets use set notation, not bitwise notation, no?<br>
&gt;<br>
&gt; Jordan<br>
&gt;<br>
&gt;&gt; On Jul 6, 2016, at 13:28, Max Moiseev via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; FixedWidthInteger only handles the implementation for the numbers, we should also consider OptionSet.<br>
&gt;&gt;<br>
&gt;&gt; I think we should keep the protocol in case someone wants to implement their own type other than an integer to be used as a raw value type in the OptionSet.<br>
&gt;&gt;<br>
&gt;&gt; As for renaming it, how about BitwiseOperand?<br>
&gt;&gt;<br>
&gt;&gt; protocol BitwiseOperand {<br>
&gt;&gt; func bitwiseOr(_ rhs: Self) -&gt; Self<br>
&gt;&gt; func bitwiseAnd(_ rhs: Self) -&gt; Self<br>
&gt;&gt; // etc ...<br>
&gt;&gt; }<br>
&gt;&gt;<br>
&gt;&gt; Max<br>
&gt;&gt;<br>
&gt;&gt;&gt; On Jul 1, 2016, at 5:19 PM, Dave Abrahams via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; on Fri Jul 01 2016, Riley Testut &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Hi all,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; This is probably very minor, but I’m not sure the protocol name<br>
&gt;&gt;&gt;&gt; “BitwiseOperations” fits the Swift API Design Guidelines. Here’s what<br>
&gt;&gt;&gt;&gt; the guidelines have to say about protocol names:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Protocols that describe what something is should read as nouns (e.g. Collection).<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Protocols that describe a capability should be named using the<br>
&gt;&gt;&gt;&gt; suffixes able, ible, or ing (e.g. Equatable, ProgressReporting).<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; From these two, BitwiseOperations appears to be (attempting) to follow<br>
&gt;&gt;&gt;&gt; the first rule, yet “BitwiseOperations” doesn’t really describe what<br>
&gt;&gt;&gt;&gt; the type is, but rather that it can do bitwise operations. The<br>
&gt;&gt;&gt;&gt; documentation itself even describes the protocol as “a type that<br>
&gt;&gt;&gt;&gt; supports standard bitwise arithmetic operators.&quot;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I propose we rename it to “BitwiseOperable”, or something<br>
&gt;&gt;&gt;&gt; similar. Again, a small change, but if this were to ever happen, I<br>
&gt;&gt;&gt;&gt; think Swift 3 is the time.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; BitwiseOperations should really be retired after<br>
&gt;&gt;&gt; <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0104-improved-integers.md" rel="noreferrer" target="_blank">https://github.com/apple/swift-evolution/blob/master/proposals/0104-improved-integers.md</a><br>
&gt;&gt;&gt; is implemented, and its uses replaced by FixedWidthInteger.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; Dave<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; swift-evolution mailing list<br>
&gt;&gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; swift-evolution mailing list<br>
&gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;<br>
<br>
_______________________________________________<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/mailman/listinfo/swift-evolution</a><br>
</blockquote></div>