Um die Materialfolge einer Kette von links nach rechts zu bestimmen, können Sie eine rekursive Funktion verwenden, die die linken und rechten Teilketten der Kette besucht und die Materialien in der richtigen Reihenfolge zusammenfügt.
Hier ist eine mögliche Implementation der Funktion liste:
liste :: Kette -> [Kettenglied]
liste Empty = []
liste (Join left material right) = (liste left) ++ [material] ++ (liste right)
In dieser Implementation besucht die Funktion zuerst den linken Teil der Kette durch Aufruf von liste left und fügt die Materialien in die Ergebnisliste ein. Dann wird das aktuelle Kettenglied hinzugefügt. Schließlich besucht die Funktion den rechten Teil der Kette durch Aufruf von liste right und fügt die Materialien in die Ergebnisliste ein.
Da die Funktion rekursiv ist, werden die Materialien von links nach rechts in die Ergebnisliste eingefügt und entsprechen damit der Materialfolge der Kette.