есть способ получить адрес элемента данных (например, элемент списка) в Haskell.Haskell: получить адрес памяти в списке
combineLists :: [a] -> [a] -> [a]
combineLists [] y = y
combineLists (x:xs) y = x : combineLists xs y
*Main> let x=[1,23, 12, 45]
*Main> x
[1,23,12,45]
*Main> let y =[90, 56, 78]
*Main> y
[90,56,78]
*Main> let z = combineLists x y
*Main> z
[1,23,12,45,90,56,78]
Теперь бы z
быть полностью построен путем копирования элементов из й и у (внутреннее представления Haskell) или
будет г-то вроде: г = [[копия всех элементов х] у]
Я хотел посмотреть, & y == & z [4] (z [4] = 90).
Также есть способ сбросить внутреннее представление, используя что-то похожее на ctypes в Python.
Спасибо.
Список не является массивом, он представлен массивом, но связанным списком. Элементы из 'y' не копируются: задана только ссылка ... Некоторые переменные, таким образом, имеют одну и ту же субструктуру. –
это будет зависеть от реализации, и, несомненно, есть люди, которые могут объяснить, по крайней мере, сторону GHC напрямую (а не я). Сказав это: я сомневаюсь, что любая реализация будет * копировать * 'y', а не просто повторно использовать его – Carsten
Вот хороший пример (и, конечно же, вы его переопределили сами): https://en.wikipedia.org/wiki/Persistent_data_structure #Linked_lists – Carsten