Für zwei Mehrweg-Bäume, T1 und T2 definiertWie verschiebe ich einen Teilbaum zwischen Bäumen in Haskell?
type Forest a = [Tree a]
data Tree a = Node {
rootLabel :: a,
subForest :: Forest a
}
Wie kann ich eine Funktion schreiben, die eine Teilstruktur von t1 entfernen werden und es zu einem bestimmten Knoten in t2 einfügen?
Ich stelle mir die Signatur so etwas wie
moveSubTree :: ((Tree x a) x (Tree x a)) -> (Tree x Tree)
aussehen würde also ein Baum und übergeordneten Knoten, die einen Teilbaum nimmt entfernt werden, und einen zweiten Baum, und der Knoten, der den Punkt, an dem bestimmt den ursprünglichen einzufügen Teilbaum.
Getrennte Funktionen zum Entfernen und Hinzufügen des Teilbaums können bei Bedarf zusammengestellt werden.
Was ist 'x'? Außerdem hat Haskell keine Hinweise. Ein Tree-Wert ist nur ein Tree, kein Unterbaum von irgendetwas. Sie müssen eine Möglichkeit bereitstellen, um einen Teilbaum aus einem Baum zu erhalten, wie den Pfad (eine Liste von Indizes). –
Sie müssen spezifischer sein als "... fügen Sie es in einer bestimmten Tiefe in t2 ein" - Es kann mehrere Punkte im Baum in jeder gegebenen Tiefe geben, zu welchem Punkt möchten Sie ihn verschieben? –
Das macht Sinn - ich hätte setzen sollen "fügen Sie es an einem bestimmten Knoten in t2". Ich werde die Frage aktualisieren, um dies zu berücksichtigen. –