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