人生いろいろ、二項セレクタもいろいろ

先日の日記 で、「**」というシンボルの二項セレクタを定義しました。動いてしまったのにちょっとビックリした――と書いたのですが、猫みたいなエセでなく、本物のSmalltalker にとっては驚くに値しません。

二項セレクタの構文は、パープルブックでは、

<特殊文字> ::=  '+' | '/' | '\' | '*' | '~' | '<' | '>' | '=' | '@' | '%' | '|' | '&' | '?' | '!' | ','

<二項セレクタ> ::= ('-' | <特殊文字>) <特殊文字>?

になります(EBNFあってるかしら?自信ないわぁ)。1文字か二文字の記号文字(但し '-' は一文字目以外NG) なら二項セレクタとして定義可能だから、当然 #** もOK になります。

ただ、二項セレクタの文法は実装系によりちょっとばらつきがあるようです。VisualWorks ではパープルブックどおりなのですが、SqueakSmalltalkではどうも、

<二項セレクタ> ::= ('-' | <特殊文字>) <特殊文字>*

になっていて、#********* とか #==> などの2文字以上の物も定義可能です。Dolphin Smalltalk や Smallscriptも同じで、やっぱり便利だからかしら?

実は、手元のマシンには SqueakVisualWorks、Smallscript と Dolphin しか入っていないので、他のは調べていないのです。(中途半端やなぁ・・)