hvr*_*hvr 12 haskell reference ghc
是否存在GHC特定的"不安全"扩展,以询问两个Haskell引用是否指向同一位置?
我知道如果使用不当,这会破坏引用透明度.但是应该没有什么害处(除非我遗漏了一些东西),如果它被非常小心地使用,作为通过短切递归(或昂贵)数据遍历进行优化的手段,例如用于实现优化Eq实例,例如:
instance Eq ComplexTree where
a == b = (a `unsafeSameRef` b) || (a `deepCompare` b)
Run Code Online (Sandbox Code Playgroud)
deepCompare如果unsafeSameRef判定为真(但不一定相反),则保证提供.
编辑/ PS:由于答案指向System.Mem.StableName,我能够找到拉伸存储管理器的文章:Haskell中的弱指针和稳定名称,恰好已经解决了这个问题已经超过10年了......