Sono consapevole che piega a sinistra produce alberi inclinati a sinistra e piega a destra produce alberi inclinati a destra, ma quando raggiungo una piega, a volte mi ritrovo impantanata in pensieri che inducono mal di testa cercando di determinare quale tipo di piega è appropriato. Di solito finisco per risolvere l'intero problema e passare attraverso l'implementazione della funzione di piegatura in quanto si applica al mio problema.
Quindi quello che voglio sapere è:
- Quali sono alcune regole pratiche per determinare se piegare a sinistra o piegare a destra?
- Come posso decidere rapidamente quale tipo di piega utilizzare visto il problema che sto affrontando?
C'è un esempio in Scala by Example (PDF) di utilizzare una piega per scrivere una funzione chiamata flatten che concatena un elenco di elenchi di elementi in un unico elenco. In tal caso, una piega a destra è la scelta corretta (visto il modo in cui le liste sono concatenate), ma ho dovuto pensarci un po 'per arrivare a quella conclusione.
Poiché il ripiegamento è un'azione così comune nella programmazione (funzionale), mi piacerebbe essere in grado di prendere questo tipo di decisioni in modo rapido e sicuro. Quindi ... qualche consiglio?