Я изучаю, как некоторые языки программирования присваивают память структурированным данным (в этом случае я изучаю массивы).Как напечатать адрес памяти списка в Haskell
Я создаю массив, как показано here в разделе 3.
import Data.Array.IO
arr <- newArray (1,10) 37 :: IO (IOArray Int Int) --Sets default to 37
И то, что я пытаюсь сделать, это распечатать адрес каждого элемента памяти, что-то вроде этого:
Array Start: <dec addr> | <hex addr> --Shows where the array itself is
Array 1: <dec addr> | <hex addr> --Memory address of the first element
Array 2: <dec addr> | <hex addr| --Memory address of the second element
Проблема в том, что я не знаю, как получить значение адреса памяти для элемента в Haskell.
Есть ли функция, аналогичная функции Python или Ruby's object.object_id
?
Я не уверен, если это возможно, но если она есть, адрес памяти может измениться в любое время в связи с переездом сборщиком мусора. –
Да, но я просто хочу напечатать адрес памяти в заданное время, поэтому не имеет значения, если позже изменения в исполнении –
есть 'reallyUnsafePtrEquals',' reallyUnsafe' заставляет меня сомневаться, что GHC разоблачит эту магию. – jozefg