I happen to think that this is a bad idea in general,
(expressions with side effects) but there are also
specific reasons this is troublesome in mIRC. The
most important issue is that mIRC accepts both "="
and "==" for comparisons. The "="/"==" issue is also
widely accepted as a source of rather insidious bugs
in eg C code (at least one highly publicized Linux
vulnerability (planted) was due to such a "mixup").
I believe Python gets this about right with having
assignment as a statement, just like mIRC does. Your
preference buys you shorter code but at the price of
decreased clarity, not a particularly compelling
tradeoff in my humble opinion.


<mostly irrelevant>
I also think the fact that most of you can't tell
assignment from binding is unfortunate, but that's a
sidenote. In my personal language would have "=" (and
"==") for comparisons, a "let var = value in"
-construction for binding, and ":=" for assigment. My
latest project (~500 lines of OCaml which would be 10x
as much C) uses assignment (destructively updating the
contents of a variable) in 2 places. Binding (naming the
result of some expression in the following code) is
obviously used all over.
</mostly irrelevant>