「結城浩の『Perlクイズ』」、ちょっと進みました。Perl の勉強になるのは当然として、 Smalltalk 自体にも新たな発見があってグッドです。そんなひとつ、Smalltalk で二変数を入れ換えるトリッキーな方法。
x := y flag: (y := x)
#flag: の部分は noop な(ただ self を返す)一引数のメソッドならなんでもいい。
Apple Smalltalk(Squeak でも 2.x まで)だと、Perl みたいにそのまま
{x. y} := {y. x}
が使えたんだけどね…。でもこういう言語機能拡張は、ただでさえ例外的位置づけの代入式に、さらにメッセージ送信メタファからの逸脱を助長するようで、個人的にはあまり好きではない。カーリーブレイス自体は便利でよく使うので偉そうなことは言えないけどね…(^_^;)。さらには、ごく初期の Smalltalk-72 では多値が扱えたからそうハズした発想でもないのかも。