Ich bin mir bewusst, dass Linksfalte linksgerichtete Bäume und Rechtsfalte rechtsgerichtete Bäume hervorbringt, aber wenn ich nach einer Falte greife, bin ich manchmal in kopfschmerzauslösenden Gedanken versunken und versuche festzustellen, welche Art von Falte Ist angemessen. Normalerweise löse ich das gesamte Problem ab und gehe die Implementierung der Faltfunktion durch, die für mein Problem gilt.
Was ich also wissen möchte ist:
- Welche Faustregeln gelten für die Entscheidung, ob nach links oder rechts gefaltet werden soll?
- Wie kann ich angesichts des Problems, mit dem ich konfrontiert bin, schnell entscheiden, welche Art von Falte ich verwenden möchte?
In Scala by Example (PDF) gibt es ein Beispiel für die Verwendung einer Falte zum Schreiben einer Funktion namens Abflachen, die eine Liste von Elementlisten zu einer einzigen Liste zusammenfasst. In diesem Fall ist eine rechte Falte die richtige Wahl (angesichts der Art und Weise, wie die Listen verkettet sind), aber ich musste ein wenig darüber nachdenken, um zu dieser Schlussfolgerung zu gelangen.
Da das Falten eine so häufige Aktion in der (funktionalen) Programmierung ist, möchte ich in der Lage sein, solche Entscheidungen schnell und sicher zu treffen. Also ... irgendwelche Tipps?