Uczę się, jak niektóre języki programowania przypisują pamięć do danych strukturalnych (w tym przypadku studiuję tablice).Jak wydrukować adres pamięci listy w Haskell
tworzę tablicę, jak pokazano here w sekcji 3.
import Data.Array.IO
arr <- newArray (1,10) 37 :: IO (IOArray Int Int) --Sets default to 37
i co próbuję zrobić, to wydrukować adres każdego elementu w pamięci, coś takiego:
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
Problem, który mam, polega na tym, że nie wiem, jak uzyskać wartość adresu pamięci dla elementu w Haskell.
Czy istnieje funkcja podobna do funkcji Pythona id(object)
lub object.object_id
Ruby?
Nie jestem pewien, czy to jest możliwe, ale jeśli tak, to adres pamięci może się zmienić w każdej chwili ze względu na przeniesieniu przez garbage collector. –
Tak, ale chcę wydrukować adres pamięci w określonym czasie, więc nie ma znaczenia, czy zmiany w późniejszym wykonaniu –
jest "naprawdęUnsafePtrEquals", "naprawdęUnsafe" sprawia, że wątpię, że GHC wyeksponuje tak wiele magii. – jozefg