There was also some talk in the math/bits proposal thread
https://github.com/golang/go/issues/18616 about creating a
math/checked library but to my knowledge no one's opened a proposal
for that yet

On Fri, Mar 17, 2017 at 6:49 AM, Ian Lance Taylor <i...@golang.org> wrote:
> On Thu, Mar 16, 2017 at 11:04 PM, Konstantin Khomoutov
> <flatw...@users.sourceforge.net> wrote:
>> On Tue, 14 Mar 2017 07:12:01 -0700
>> Ian Lance Taylor <i...@golang.org> wrote:
>>
>>> > I was thinking about the type safety of uint in go, and comparing
>>> > it for a similar problem.
>>> >
>>> > If I have this go code:
>>> >
>>> > var x uint
>>> > x--
>>> >
>>> > The value of x is then the maximal value of uint, which is probably
>>> > not what the gother wanted (I think, is there any particular use
>>> > cases for that that you know of?)
>>> >
>>> > So my question is: why does go allow that, and for example panics
>>> > on index out of range of an array? Doesn't it make sense that it
>>> > also should panic in this case?
>>>
>>> Well, there are also uses for modulo arithmetic.  If we make this
>>> panic, writing the equivalent operation that doesn't panic seems
>>> awkward.  I think there is a better case to be made that signed types
>>> should panic on overflow, the main question there being the run time
>>> efficiency cost.
>>
>> I think I might have asked this already but wouldn't it be possible to
>> add (in the future) a two-argument form for integer arithmetic
>> operations and bit shifts, so that the second argument, if used, is set
>> to the overflow status?
>>
>> Like in:
>>
>>   var x uint
>>   if x, of := x-1; of {
>>      panic("Integer underflow");
>>   }
>>
>>   var y uint32
>>   if y, cf := x << 33; cf {
>>      panic("Bit carrying detected");
>>   }
>>
>> I'm not too much versed in CPU hardware, so offhand I can only say that
>> Z80 and x86 do support overflow and carrying detection.
>
> See https://golang.org/issue/6815.
>
> Ian
>
> --
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to