These are good points. I would suggest the unary - creates serious readability concerns and should only be valid as 0 x -; ~ and unary + raise other considerations. The ~ operator is extremely useful in bitshift and bitmask operations, and has an ugly ~x representation as 0 1 - x ^ in the same way as unary -x is 0 x - (which is elegant).
Unary can't be assumed from 0 x +, and it seems inelegant to use things like ~x -x +x (i.e. without white space) On Fri, Apr 2, 2021 at 12:09 PM MRAB <pyt...@mrabarnett.plus.com> wrote: > > On 2021-04-02 16:55, Richard Damon wrote: > > I think python only has 3 unary operations, + - and ~ and only + and - > > can also be binary operations. > > > > unary + has less uses, since it normally just passes its argument, if > > valid, unchanged, but can be used to validate that its argument has the > > right type. I am not sure if a type could define its own unary+ to do > > something special, but I thought it could. > > > The Counter class from the collections module has a special use for unary +. > > > On 4/2/21 11:19 AM, John wrote: > >> True. It gets ambiguous when doing n*(-(x + y)) i.e. n x y + - * > >> (fail). The simplest solution is n 0 x y + - * > >> > >> I can't actually think of any other unary operators. > >> > >> On Fri, Apr 2, 2021 at 10:54 AM Richard Damon <rich...@damon-family.org> > >> wrote: > >>> One problem with trying to mix RPN with in-fix is that some operators, > >>> like - can be either a unary or binary operation in the in-fix > >>> notations, distinguished by context. In RPN you have lost that context. > >>> > >>> is x y - - the same as -(x-y) or is it x-(-y) ? or is it waiting for > >>> another operator and be x ?? (-(-y)) or is it expecting a previous > >>> operand and is ?? - (x-y) > >>> > >>> (same with +) > >>> > >>> Typical RPN systems get around this by having unary - be a different > >>> symbol/key that binary - > >>> > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/TOLSXCBXVVB45J6L2ELPWPQ22MGZ5DTC/ > Code of Conduct: http://python.org/psf/codeofconduct/ _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/P5N4T5FVISWILRTRQRS2UGEUEBREIID6/ Code of Conduct: http://python.org/psf/codeofconduct/