>
> x := -3 // does NOT mean get the value 3, negate that, and assign to the
> location known as x.


Correction: Number literals in go don't include a sign in their definition:
https://golang.org/ref/spec#Integer_literals
So, yes, it does mean exactly that :)

Your explanation, however, does make some kind of sense. Enough, in any
case, to not spend any more energy on the question :)

On Sat, Aug 20, 2016 at 1:00 AM, Michael Jones <michael.jo...@gmail.com>
wrote:

> My answer is philosophical, and possibly not what is wanted, but it is
> informed. Here goes:
>
>
>
> Backstory: Unary Minus, as taught in computer science and implemented in
> languages and instruction sets and so forth is slightly confusing and often
> confusingly described.
>
>
>
> x := -y // means get the value of y, negate that, and assign to the
> location known as x.
>
>
>
> This is what we commonly think of when seeing unary minus. It is proper.
> However this…
>
>
>
> x := -3 // does NOT mean get the value 3, negate that, and assign to the
> location known as x.
>
>
>
> …instead it means “assign the value ⁻3 to x”, where negative 3 is a single
> idea, not two as in (Negate 3). The raised minus sign is from Kenneth
> Iverson, who used it in APL to make the point that the ‘⁻’ and ‘-‘ have
> entirely different meanings.
>
>
>
> There is a Wikipedia article about this but its scholarship is, well, more
> about usage than history. They talk about the raised minus as an elementary
> school teaching tool (which it may be) but they leave it there with little
> suggestion of its illustrious past. Yet, to their credit there is a handy
> example:
>
>
>
> ⁺3 − ⁻5 becomes ⁺3 + ⁺5 = ⁺8
>
>
>
> where you might imagine a teacher saying “positive three minus negative
> five becomes…” which is nice. (A sophisticated college CS teacher or parser
> coder might instead say “plus 3 minus minus 5 becomes…” ;-) We don’t have
> the raised minus to say “here is a negative number” so we make use of the
> unary rather than binary minus to suggest negative. You use what you have.
>
>
>
> Now, on to the original question:
>
>
>
> Standard floating point output since the 1950’s has allowed printing of
> either blank or “+” as the prefix for positive floating point values and,
> necessarily, the lowered minus “-“ for negative values; we get the ‘+’ with
> a printf format like “%+10.4f”.
>
>
>
> It is handy to be able to parse what is output, such as numerical
> approximations and weights in formula source code, so the parsing of
> “3.1415” was made to accept “+3.1415” for the same meaning, and of course
> “-3.1415” since we lack the raised minus.
>
>
>
> Since floating point values accept the stylistic ‘+’ prefix, so do integer
> values.
>
>
>
> ..and here we are today, some 50 years later.
>
>
>
> P.S. If you visited Thomas Payne’s bookshop in London (in the 1750s) you
> could have bought your own copy of Francis Maseres’ *“A dissertation on
> the use of the negative sign in algebra: containing a demonstration of the
> rules usually given concerning it; and shewing how quadratic and cubic
> equations may be explained, without the consideration of negative roots. To
> which is added, as an appendix, Mr. Machin's quadrature of the circle.”*
> You could have enjoyed much discussion of the new style of writing and its
> advantages.
>
>
>
>
>
> *From: *"'Thomas Bushnell, BSG' via golang-nuts" <
> golang-nuts@googlegroups.com>
> *Reply-To: *"Thomas Bushnell, BSG" <tbushn...@google.com>
> *Date: *Friday, August 19, 2016 at 1:36 PM
> *To: *Axel Wagner <axel.wagner...@googlemail.com>, Rob Thornton <
> rthornton...@gmail.com>
> *Cc: *golang-nuts <golang-nuts@googlegroups.com>
> *Subject: *Re: [go-nuts] Unary +
>
>
>
> In C, the type is promoted. But this ain't C. No clue what the point is in
> Go. It would function as a compile-time type-check for "numeric" I guess,
> but what would be the point?
>
>
>
>
>
> On Fri, Aug 19, 2016 at 1:32 PM 'Axel Wagner' via golang-nuts <
> golang-nuts@googlegroups.com> wrote:
>
> x would already be signed during implicit type inference. The inferred
> type is either the one specified in an argument or declaration, or it's the
> default type (which is int, thus signed).
>
>
>
> I don't know the answer to your question though. I didn't even know this
> existed…
>
>
>
> On Fri, Aug 19, 2016 at 9:54 PM, Rob Thornton <rthornton...@gmail.com>
> wrote:
>
> What is the purpose of the unary '+' operator? In both C and Go they are
> syntactically correct but neither generate instructions to modify the
> expression.
>
> The '-' operator obviously generates a neg or sub from 0 instruction to
> negate the result by inverting the expression with an add with carry.
>
> I know of no single instruction or pair of instructions to reliably ensure
> any value or expression is always positive so why include this unary
> operator at all? Is there a purpose I'm missing? Or is it just for clarity
> or force an implicit variable to be signed?
>
> As in:
>
> x := +5
>
> Would this ensure that x must be signed during impicit type inference?
>
> If I read the specification correctly, this would also affect the
> resolution of untyped constants. Is this correct?
>
> --
> 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.
>
> --
> 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