The real problem is not that this is a bad idea by itself, but that the consistent extension of it - := for assignment and then <i>= to test equality</i> - is inconsistent with standing code on dint of its second point. Which means you are left with a nasty, awkward mix of :=, =, and == all sitting side by side. (:=, =) and (=, ==) should be the <i>only</i> combinations that exist in a language that includes either, I'd say, and of course you can't scrap == <i>nor</i> redefine = without breaking all existing code badly.