<br><br><div class="gmail_quote">On Tue, Mar 17, 2009 at 9:23 AM,  <span dir="ltr"><<a href="mailto:hwpuschm@yahoo.de">hwpuschm@yahoo.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Thank you very much for correctly remarking that the "definition" I formulated contradicts the examples I gave and is therefore utterly inadecuate:<br>
<br>
> It is proposed to introduce a Keyword "same",<br>
> to be used in the right hand side of assignments, as<br>
> follows:</blockquote><div><br><br>I once wrote a blog post on how an expression like "N = N + 1" was confusing to beginners, so I'm sympathetic with the underlying idea. <br>(<a href="http://aroberge.blogspot.com/2005/05/n-n-1.html">http://aroberge.blogspot.com/2005/05/n-n-1.html</a>    Note that there are much better explanations for naming objects in Python than this old post I wrote.)<br>
<br>However, I am -1 on this proposal.  IMO, it decreases readability and achieves very little in terms of clearing up the confusion.<br><br>Quick test: which is the easier to read and get right?<br><br>n = same + 1<br>n = sane + 1<br>
n = n + 1<br><br><br>André<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
>  <br>
>   "xx = same + 5" or "...DELETED..." synonymous with "xx += 5"<br>
>   "value =  2*same + 5"  synonymous with "value =*2;<br>
> value +=5"<br>
>   "switch = 1 - same"  synonymous with "switch *-1;<br>
> switch +=1"<br>
>   "lst = same + [5,6]"  synonymous with  "lst += [5,6]"<br>
><br>
>   "lst = [5,6] + same" synonymous with  "...DELETED..."<br>
>   "lst[2] = 1/same" synonymous with  "lst[2] **=-1"<br>
>  <br>
> and so on.<br>
<br>
What I would like is to extend the augmented assignment<br>
and make it easy to understand for naive readers.<br>
I hope the following literary definition<br>
is consistent enough to convey the correct meaning:<br>
  "whenever it is possible, modify the target IN PLACE<br>
  according to the right hand side expression.<br>
  If it is not possible to do such a thing,<br>
  substitute the target object with<br>
  an object that is build according to the right hand side expression<br>
  and subsequently deleted"<br>
<br>
The following examples should be correct:<br>
  "xx = same + 5"  synonymous with  "xx += 5"<br>
  "value =  2*same + 5"  synonymous with  "value =*2; value +=5"<br>
  "switch = 1 - same"  synonymous with  "switch *-1; switch +=1"<br>
  "lst = same + [5,6]"  synonymous with  "lst += [5,6]"<br>
  "lst[2] = 1/same" synonymous with  "lst[2] **=-1"<br>
The following examples would be extensions:<br>
  "lst = [5,6] + same" synonymous with<br>
      "lst.reverse(); lst.extend([6,5]); lst.reverse()"<br>
  "inmutable = same*(same+1)"  synonymous with<br>
      "unused=inmutable+1; inmutable*=unused; del unused"<br>
<br>
There seems to be no really simple expression for the above extensions,<br>
and I take that as an indication<br>
that the proposed feature could be quite useful.<br>
<br>
<br>
<br>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-ideas" target="_blank">http://mail.python.org/mailman/listinfo/python-ideas</a><br>
</blockquote></div><br>