让一棵大树(或另一个大数据结构)。假设你有一些兴趣点(P = {p1,p2,...},其中p中的pN)。你可以为每个pN使用拉链但是,如果我必须在特定的pN上更新(CRUD)T,该怎么办?
忽略共享内存问题(通过锁解决),使用命令式语言我可以使用指针。正在更新pN我正在更新T.
什么是正确的方法(“纯粹的”)Haskell?
谢谢!
注意:P是一个真实的列表,所有我们有P的兴趣点,我们可以一次更新一个点,部分或全部。存在P以避免每次搜索每个pN(T很大)。再次感谢!
更新:对不起,我找到了对我的问题(Zipper like data structure with more than one cursor)的正确回复,我如何更新(或删除)我的问题?
答案 0 :(得分:1)
“您可以为每个pN使用拉链”
想象一下像Zork这样的文字冒险游戏。你是拉链,T是你正在探索的树世界。在p7室,您可以更改内容并在CRUD中执行U.然后你看看你的选择:
该列表涵盖二叉树中的基本移动,您的T可能不同。要更新所有P,你沿着某条路径走拉链,访问所有p1,p2,p3等。一个简单的路径是从T的根开始,下降到p1,返回到T的根,下降到p2,回到T的根,下降到p3等等。
最终你完成并离开了T世界。这通常被称为“关闭拉链”。