gpt4 book ai didi

Haskell:获取列表的内存地址

转载 作者:行者123 更新时间:2023-12-01 12:36:25 32 4
gpt4 key购买 nike

有没有办法在 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 的东西来转储内部表示。

谢谢。

最佳答案

您可以使用 StableNamereallyUnsafePointerEquality# (注意名称,不要在实际程序中使用;您还需要 MagicHash 扩展名来调用它)检查两个表达式是否引用同一个对象。参见 What advantages do StableNames have over reallyUnsafePtrEquality#, and vice versa?对于差异。

关于Haskell:获取列表的内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29319891/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com