Ho una struttura dati che rappresenta una firma di tipo, questa struttura dati è un albero esemplificato nella prima immagine come quella rossa. Vorrei ottenere quello nero e finora ho ottenuto solo quello arancione (seconda immagine), che è l'albero del tipo ma associato a sinistra.Riscrittura alberi
Ecco l'arancio che ho finora (seguire le frecce arancioni)
avevo risolto questo problema abbastanza stampa l'albero e poi l'analisi con un parser combinator, ma questa inefficienza non è desiderata. Penso di poter avere un altro algoritmo per convertire dall'albero arancione a quello nero, ma sarebbe meglio se invece di comporre due algoritmi, potrei scrivere solo uno.
Etichetterò questo come Haskell mentre sto scrivendo la mia soluzione su di esso. Potrei fornire il codice per ottenere una struttura dati come l'albero rosso ma penso che complicherebbe solo il tentativo di soluzione ..
Vorrei sapere se esiste un nome per questo algoritmo e/o il nome della posizione dell'operatore nell'albero rosso è. È un prefisso?
Grazie.
Quello che hai è '(a -> b) -> c'. Quello che hai è '(a -> b) -> c'. Quello che vuoi è 'a -> (b -> c)'. Penso che tu abbia commesso un errore nel decidere quale risultato desideri. –
@DanielFischer In effetti, ora ho deciso di volere il risultato che volevo con l'aiuto degli stack, grazie per aver letto il mio casino –