Sto studiando come alcuni linguaggi di programmazione assegnino memoria ai dati strutturati (in questo caso sto studiando array).Come stampare l'indirizzo di memoria di un elenco in Haskell
Sto creando la matrice, come illustrato nella sezione here 3.
import Data.Array.IO
arr <- newArray (1,10) 37 :: IO (IOArray Int Int) --Sets default to 37
E quello che sto cercando di fare è stampare l'indirizzo di ciascun elemento di memoria, qualcosa di simile:
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
Il problema che ho è che non so come ottenere il valore dell'indirizzo di memoria per un elemento in Haskell.
Esiste una funzione simile a id(object)
di Python o Ruby object.object_id
?
Non sono sicuro se questo è possibile, ma se lo è, l'indirizzo di memoria in grado di cambiare in qualsiasi momento a causa di delocalizzazione dal garbage collector. –
Sì, ma voglio solo stampare l'indirizzo di memoria in un dato momento quindi non importa se le modifiche successive nell'esecuzione –
c'è un 'reallyUnsafePtrEquals', il' reallyUnsafe' mi fa dubitare che GHC esporrà questa molta magia. – jozefg