[swift-evolution] [Review] SE-0104: Protocol-oriented integers

Dave Abrahams dabrahams at apple.com
Mon Jun 27 18:06:45 CDT 2016


on Thu Jun 23 2016, Remy Demarest <swift-evolution at swift.org> wrote:

> I would also like to know why bit shifting and bit-wise and, or and
> xor operations are limited to FixedWidthInteger. I would think that a
> variable-length integer would be able to handle these operations in a
> predictable way consistent with the protocol. Wouldn't it?

The semantics of left shift on fixed width integers is that high bits
are discarded.  How do you define that operation for variable-width
integers?  Can you write a meaningful generic algorithm that uses a left
shift on both variable- and fixed-width integers?  Similar arguments
apply to the bit-inverse operation.

It's possible that variable-width integers can implement some subset of
the bitwise operations in a sensible way, but until someone works out
exactly what that subset is, how it behaves, and why it's useful, I
don't think we want to lock that into any other protocols than
FixedWidthInteger.

Remember, variable-width integers can still support all the operations
you care to implement.  It's just that their semantics will in some
cases be subtly different from those of fixed-width integers.

>> Le 22 juin 2016 à 23:23, Félix Cloutier via swift-evolution <swift-evolution at swift.org> a écrit :
>> 
>> Do we lose the ability to create a signed integer from an unsigned bit pattern?
>> 
>> Is there a way to get an optional initializer that returns `nil` if the operand can't be represented?
>> 
>> What is the cost of heterogeneous comparison?
>> 
>> Félix
>> 
>>> Le 22 juin 2016 à 22:42:00, David Waite via swift-evolution <swift-evolution at swift.org> a écrit :
>>> 
>>> In addition to the technical review, I would like to point out that
>>> the definition of Arithmetic appears to be missing some underscores
>>> in add/adding/subtract/subtracting
>>>> 
>>>> 	https://github.com/apple/swift-evolution/blob/master/proposals/0104-improved-integers.md
>>>> 
>>>> 	* What is your evaluation of the proposal?
>>> 
>>> I’m so glad this work is being done!
>>> 
>>> For Integer, does the presence of signBit indicate an expectation
>>> that signed Integers will have a two's complement representation?
>>> 
>>> For FixedWidthInteger#dividedWithOverflow/remainderWithOverflow,
>>> under what situations would you have an overflow? I could only come
>>> up with something like Int.min.dividedWithOverflow(-1).
>>> 
>>>> 	* Is the problem being addressed significant enough to warrant a change to Swift?
>>> 
>>> Yes, oh yes.
>>> 
>>>> 	* Does this proposal fit well with the feel and direction of Swift?
>>> 
>>> It looks like a significant improvement. 
>>> 
>>>> 
>>>> 	* How much effort did you put into your review? A glance, a quick reading, or an in-depth study?
>>> 
>>> I combed the proposal for questions, although most were answered by the time I hit the end.
>>> 
>>> -DW
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-- 
Dave



More information about the swift-evolution mailing list