Ответ 1
Я нашел решение. Справочник Scala говорит в разделе 6.12.3 Операции с инфиксами:
Ассоциативность оператора определяется оператором последнего символа. Операторы, оканчивающиеся на двоеточие: ассоциативны справа. Все остальные операторы левоассоциативны.
Поэтому было достаточно переименовать >>
в >>:
Мне потребовалось некоторое время, чтобы осознать, что в то время как a >> b
десугарируется в a.>>(b)
, a >>: b
десугарируется в b.>>:(a)
. Поэтому я должен был определить >>:
как
def >>:(x: T): T = x >> this