我想在haskell編寫瀏覽器。中央數據結構將是代表文檔的可變樹。除了使用完全由iorefs組成的樹,還有更好的解決方案嗎?什麼haskell數據結構來存儲可變的樹
我希望能避免這樣的事情:data DomNode = DomNode TagName NodeProperties (IORef DomNode) [IORef DomNode]
(標籤,屬性,父母,子女)
的問題是,JavaScript可以守住節點引用的樹,它可以發生變異(添加子,修改屬性)它引用的任何節點,以及遍歷它的父節點。
編輯:
我意識到你將需要以某種方式使用可變的狀態 - 因爲你可以穩守於從樹中刪除,或者在樹上移動的節點的引用。如果你通過基於樹結構的東西來引用元素,那麼這個引用將是無效的。
也許使用[拉鍊](http://www.haskell.org/haskellwiki/Zipper)? – 2013-02-12 01:49:40