[英]Haskell: get memory address of a list
有沒有辦法在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
可以通過復制從x和y(內部的Haskell表示)元件完全構造或
將z是這樣的:z = [[來自x的所有元素的副本] y]
我想看看&y ==&z [4](z [4] = 90)。
還有一種方法可以使用類似於Python中的ctypes來轉儲內部表示。
謝謝。
您可以使用StableName
或reallyUnsafePointerEquality#
(注意名稱,不要在實際程序中使用;您還需要使用MagicHash擴展來調用它)來檢查兩個表達式是否引用同一個對象。 看看StableNames對reallyUnsafePtrEquality#有什么好處,反之亦然? 為了差異。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.