私はhaskellでブラウザを書くことを考えていました。中心的なデータ構造は、ドキュメントを表す可変ツリーになります。完全にiorefで構成されるツリーを使用する以外に、より良い解決策はありますか?
私はこのようなものを避けたいと思っています:(data DomNode = DomNode TagName NodeProperties (IORef DomNode) [IORef DomNode]
タグ、プロパティ、親、子)
問題は、javascriptがツリー内のノードの参照を保持でき、参照先のノードを変更(子の追加、プロパティの変更)したり、親に移動したりできることです。
編集:
ツリーから削除された、またはツリー内で移動されたノードへの参照を保持できるため、何らかの方法で可変状態を使用する必要があることに気付きました。ツリーの構造に基づいたものを介して要素を参照した場合、この参照は無効になります。