Создание кортежа (или списка) из уже существующих объектов - какова стоимость?

Предположим, у нас есть функция, подобная этой. :

foo (x, _, y) = (x, y)

Он берет кортеж из трех элементов и возвращает пару, состоящую из первого и третьего элементов исходного кортежа.

Теперь предположим, что мы должны передать этой функции кортеж из трех элементов, состоящий из некоторых тяжелых элементов. объекты. Будут ли скопированы два объекта для создания нового кортежа или внутреннее представление кортежа содержит только ссылки на объекты?

Я полагаю, что, поскольку данные в Haskell неизменяемы, дополнительное копирование не потребуется, но я просто хочу быть уверенным.

Если это поведение определяется реализацией, я хотел бы знать, что делают разные реализации. в таких случаях.

9
задан 11 July 2011 в 20:09
поделиться