Je m'entraîne à utiliser des objets immuables en C ++. Mon objectif personnel est de représenter un graphe d'objet générique (en tas) avec une séquence de graphes immuables.
Construire le graphique multi-version lui-même n'est pas si difficile. Le problème est la performance. Le contrôle de version à force brute nécessite une copie complète du graphique, ce qui n'était pas acceptable.
J'ai essayé de partager des nœuds inchangés. Mais dans ce cas, j'ai eu un nouveau problème; les références. La référence à un autre objet doit être mise à jour dans tout le graphique. Cela nécessite de visiter tous les nœuds pour chaque fois que je dérive une nouvelle version du graphique. Et cela mute les nœuds avec des références, ils doivent donc également être dérivés (par copie). Les performances ne seront pas meilleures que la copie par force brute.
Autant que je puisse imaginer, il n'y a pas de moyen vraiment efficace de représenter la mutation du graphe d'objet avec des états immuables. Je demande donc une idée à ce sujet.
Est-il possible de représenter efficacement une mutation du graphe objet avec un état immuable?