В настоящее время я изучаю Haskell, и мне интересно узнать следующее:
Если я добавлю элемент в список в Haskell, Haskell вернет новый (полностью?) новый список и не будет работать с исходным.
Теперь скажем, что у меня есть список из миллиона элементов, и я добавляю один элемент в конце. Haskell "копирует" весь список (1 миллион элементов) и добавляет элемент в эту копию? Или есть аккуратный "трюк", идущий за кулисами, чтобы избежать копирования всего списка?
И если нет "трюка", процесс копирования больших списков не так дорог, как мне кажется?