如何在Haskell中模拟指针?

Ele*_*hog 9 heap haskell dijkstra

我正在尝试在Haskell中实现Dijkstra的算法.我已经使用树实现了二进制堆.在算法中,应该在堆中更新当前顶点的邻居键.如何在Haskell中模拟堆中值的指针?如何在每次操作后堆都在变化时,如何快速访问堆中的元素?

Chr*_*lor 12

查看Data.IORefData.STRef包,它们允许您访问可变引用.如果您还需要执行IO,请使用IORef,如果不需要,则使用STRefs.

但是,我怀疑你可能做错了.完全可以在没有可变状态的情况下实现Dijkstra算法(尽管你需要小心一点,因为如果你不断重新计算可以缓存的函数评估,你很容易导致渐近运行时间爆炸).