Functional Breadth First Search

Funktionale Tiefensuche ist in gerichteten azyklischen Diagrammen sehr schön.

ie können wir jedoch in Diagrammen mit Zyklen eine unendliche Rekursion vermeiden? In einer prozeduralen Sprache würde ich Knoten markieren, wenn ich auf sie treffe, aber sagen wir mal, ich kann das nicht.

Eine Liste der besuchten Knoten ist möglich, jedoch langsam, da die Verwendung eines Knotens zu einer linearen Suche in dieser Liste führt, bevor sie wiederholt wird. Eine bessere Datenstruktur als eine Liste hier würde natürlich helfen, aber das ist nicht das Ziel des Spiels, weil ich in ML codiere - Listen sind König und alles andere muss ich selbst schreibe

Gibt es eine clevere Möglichkeit, dieses Problem zu umgehen? Oder muss ich mich mit einer besuchten Liste oder, Gott bewahre, einem veränderlichen Zustand begnügen?