Вы неправильно поняли ассоциативность. Оператор op
ассоциативен, если (a op b) op c
эквивалентен a op (b op c)
. Для операторов, которые не являются ассоциативными, становится актуальным то, означает ли a op b op c
для первого или последнего. Таким образом, мы различаем левоассоциативные операторы, где это (a op b) op c
, и право-ассоциативные операторы, где это a op (b op c)
.
Большинство операторов на большинстве языков являются лево-ассоциативными. Возьмем, например, -
: a - b - c
эквивалентен (a - b) - c
на большинстве языков, а не a - (b - c)
.
Оператор присваивания является исключением из того, что (a = b) = c
, как правило, не является законным (так как вы не можете назначить результат задания). Таким образом, в большинстве языков a = b = c
эквивалентно a = (b = c)
. Заметным исключением является Python, где a = b = c
не ассоциируется вообще и является просто незаконным.
Ничего из этого не имеет отношения к разнице между a = b
и b = a
. Поскольку это связано только с одним использованием оператора =
, ассоциативность вообще не влияет на это. Скорее соответствующее имущество commutativity: Оператор op
является коммутативным, если a op b
равнозначно b op a
. Я не знаю ни одного языка, где назначение является коммутативным, и я не знаю, как это может быть.
Понятия, такие как левая коммутация или право коммутативность, не существуют. Насколько я знаю, нет никакого вопроса для вопроса: «a = b
присваивает b
a
или наоборот?» - это только часть семантики оператора присваивания.
Я думаю, что ваш вопрос вводит в заблуждение. Вы спрашиваете о ассоциативности присваивания, но продаете свой вопрос как ассоциативность языка, что бы это ни значило (я считаю, что это ничего не значит.) –
@LittleAlien, как бы вы прояснили вопрос? Из того, что я видел, все операторы на каждом языке заданы как правые ассоциативные. Я думал, что может быть язык, который был написан, чтобы быть ассоциативным. –
Нетрудно узнать, что есть операции, которые не являются правильными ассоциативными. Даже по ссылке, которую вы опубликовали, мы читаем о неассоциативных операторах и видим ссылку на таблицу приоритетов на языке C с ассоциативностью. Здесь вы найдете левые и правые ассоциативные операторы. Вы не найдете никакого «правильного ассоциативного языка» в Google. Вы только [выбрали одного оператора и распространили его ассоциативность на все операторы] (http://www.youtube.com/watch?v=s7MTM4BKZ_E). Поскольку нет RA-языков, это заставило меня подумать, что вы спрашиваете об операторе назначения LA. –