Kennt jemand eine C++ - Datenstrukturbibliothek, die funktionale (a.k.a. unveränderliche oder "persistente" im FP-Sinn) Äquivalente der bekannten STL-Strukturen bereitstellt?Funktionale Datenstrukturen in C++
Mit "funktional" meine ich, dass die Objekte selbst unveränderlich sind, während Änderungen an diesen Objekten neue Objekte zurückgeben, die die gleichen Interna wie das übergeordnete Objekt haben, wo es angemessen ist.
Idealerweise würde eine solche Bibliothek STL ähneln und würde gut mit Boost.Phoenix funktionieren (Vorsicht - Ich habe Phoenix nicht benutzt, aber soweit ich das beurteilen kann, bietet es viele Algorithmen, aber keine Datenstrukturen, außer a faul berechnete Änderung an einer bestehenden Datenstruktur zählt - tut es?)
Konnten Sie nicht den gewünschten Effekt erzielen, indem Sie alle Objekte nach Wert übergeben und zurückgeben? –
Nur wenn ich den Performance- und Speicheraufwand überstehen konnte. Der Trick bei funktionalen Datenstrukturen ist, dass sie wo immer möglich Interna teilen. Dies ist sicher zu tun, da die Objekte unveränderlich sind und viel weniger Speicher- und Prozessor-hungrig sind als nur die Rückgabe großer Datenstrukturen. – drg
Ich war wirklich interessiert an der gleichen Frage, während ich den Erfahrungsbericht unter http://portal.acm.org/citation.cfm?id=1596591 mitschrieb. Meine Schlussfolgerung zu dieser Zeit war, dass Sie wirklich eine Müllsammlung brauchen: Der Vorteil der persistenten Struktur liegt in der gemeinsamen Nutzung, aber im Falle des Teilens gibt es keinen eindeutigen Besitz eines einzelnen Knotens mehr, also eine Art zentrale Autorität (GC). muss entscheiden, welche Knoten zurückgewonnen werden können. Das, oder es ist für Ihre Anwendung nicht wichtig, dass Knoten nur zugewiesen und niemals freigegeben werden. –