> The latter can be avoided if one follows the no-bang-method-chain
> rule.  But I don't force you to agree with me (yet ;-).

If a justification is required, i'd say that the no-bang-method-chain rule
follows the if-it's-not-necessary-to-return-a-value-it-is-necessary-not-to
rule. 

In particular, method chains rely on all the relevant methods to follow
some specific meta-protocol about return values. The feature of being able
to chain messages is thus implemented in hundreds and thousands of places,
which most blatantly violates the DRY principle. The most exploded case of
non-modularity.

If you want to do this right, add an operator that picks the result of the
next-to-last expression:

foo.bar $ .qux    # same as foo.bar; foo.qux


And if you don't want to add it, well, don't.

matju