関数型プログラミング言語Haskellは色々と面白い特徴があるのだが、その中でも関数適用で f1(f2(f3(arg))) を f1 $ f2 $ f3 $ arg と書けてしまう'$'演算子が結構良い感じだ。 Pythonではあいにく'$'は演算子として認められていないので、他の演算子を選ぼうとしたのだが、実は候補は一つしかなかった。 それは'**'だ。 Pythonの微妙な仕様の一つに、演算子のオーバーロードは出来ても、演算子の演算順序を変えることは出来ないという法則がある。 そして調べたところ、同一の演算子で$演算子のように「右結合」の演算子は、Pythonでは'**'しかなかった。 これを調べる方法は簡単だ。 まず、前に書いたシンボルを応用して、演算子結合調査用のクラスを書く。 #sss.py class S: def __init__(self, s): self.s = s d