Я заметил, что Data.UnionFind использует монаду IO для предоставления указателей через IORefs Я думаю, что все с радостью вызывают unsafePerformIO
при локальном использовании в чистом коде, так как структура данных так хорошо понятна, но..
Существует ли канонический более чистый подход к таким структурам данных?Возможно, обертка вокруг ввода-вывода, которая делает неизбежный unsafePerformIO
менее небезопасным «выглядит», запрещая большинство операций ввода-вывода? на?