Vermeiden von IORefs in reinem Code

Ich bemerkte, dassData.UnionFind Verwendet die E / A-Monade, um Zeiger über IORefs bereitzustellen. Ich stelle mir vor, jeder ruft glücklich anunsafePerformIO wenn es lokal in reinem Code verwendet wird, da die Datenstruktur so gut verstanden ist, aber ..

Gibt es einen kanonisch saubereren Ansatz für solche Datenstrukturen? Vielleicht ein Wrapper um IO, der das Unvermeidliche machtunsafePerformIO Weniger unsicheres "Schauen" durch Verbot der meisten E / A-Operationen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage