Стоимость конкатенации линейна по длине левого операнда, потому что она должна быть скопирована. Следовательно, x @ (y @ z)
дешевле, чем (x @ y) @ z
, поскольку последний скопирует список x
дважды.
Кроме того, иногда вам потребуется смешивать операторы cons и concat (x @ y :: z
), что было бы более неуклюжим, если бы они имели различный приоритет или ассоциативность.