Funktionelle Datenstrukturen (wie das Hash Array Mapped Trie, das in Haskell/Clojure/Scala verwendet wird) beruhen auf einer großen Anzahl von Teilen in der zugrunde liegenden Datenstruktur. Beispiel: Wenn wir insert
für einen kartenähnlichen Datentyp implementieren, der normalerweise durch Kopieren des Pfads in der Baumstruktur implementiert wird, die die Datenstruktur implementiert.Beherrschen Raus Schuldenregeln funktionale Datenstrukturen?
Angesichts der Tatsache, dass diese Datenstrukturen eine Menge teilen (und keine Haupteigentümer der zugrunde liegenden Werte), wird Kreditaufnahme in die Art und Weise der Umsetzung solcher Strukturen?
Wie gesagt, diese Frage scheint übermäßig breit oder Meinung basiert. Hast du etwas versucht und hat es nicht funktioniert? Kennen Sie die "Fluchtluke", die "unsicher" bietet? Welche Art von Antwort wäre hier gültig? Es gibt eine [Hamst Kiste] (https://crates.io/crates/hamt/), liefert das eine Antwort? – Shepmaster
Siehe die Antwort auf [diese Frage] (https://stackoverflow.com/questions/31227269/generic-types-ownership-and-persistent-data-structures?rq=1). Es erklärt, dass 'Rc' mehreren Eigentümern der gleichen Daten erlaubt, und während es aussieht, als ob '.clone()' eine Kopie erstellt, ist es eine flache Kopie, die die Daten nicht wirklich kopiert. Es ist eigentlich Unveränderlichkeit, die dies ermöglicht. Die Hamt-Kiste verwendet 'Rc' [hier] (https://github.com/rainbowbismuth/hamt-rs/blob/master/src/lib.rs#L801). –
Geteilte unveränderliche Eigentumsrechte sind in der Regel einfach, wenn Sie GC explizit machen. Zyklische Daten sind der problematische Teil. – Veedrac