Per due alberi multidirezionali, t1 e t2, definito utilizzandoCome spostare un sottoalbero tra gli alberi in Haskell?
type Forest a = [Tree a]
data Tree a = Node {
rootLabel :: a,
subForest :: Forest a
}
come posso scrivere una funzione che rimuove una sottostruttura da t1 e inserirla in un dato nodo t2?
immagino la firma sarebbe simile
moveSubTree :: ((Tree x a) x (Tree x a)) -> (Tree x Tree)
cioè ci vuole un nodo della struttura e genitore che definisce una sottostruttura di essere rimosso, e un secondo albero e il nodo che definisce il punto in cui inserire l'originale sottostruttura.
Separare le funzioni per rimuovere e quindi aggiungere la sottostruttura potrebbe essere composto se necessario.
Che cos'è 'x'? Inoltre, Haskell non ha indicazioni. Un valore Albero è solo un Albero, non un sottoalbero di nulla. È necessario fornire un modo per ottenere una sottostruttura da un albero, come il percorso (una lista di indici). –
Dovrai essere più specifico di "... inseriscilo a una data profondità in t2" - Ci possono essere diversi punti nell'albero a qualsiasi profondità, a quale vuoi spostarlo? –
Questo ha senso - avrei dovuto inserire "inseriscilo in un dato nodo in t2". Aggiornerò la domanda per riflettere questo –