Python で中置演算子を定義する方法

これはバカだぁ。こういうの好きだぁ。

具体的には、カリー化させて書くとこんな感じ。

2 |x| 3 = ((2 | x) | 3 = (x(2)) | 3 = x(2, 3)

Python では左右の | 演算子の挙動を override できるらしい。これを使って、適用順を操作してるんですね。