infix-rule? はいらないな。。 単に nil かどうかで判定すればよい
rule を単なる辞書ではなくてprotocolにする
protocol を先に宣言する