Избегание IORefs в чистом виде код

Я заметил, что Data.UnionFind использует монаду IO для предоставления указателей через IORefs Я думаю, что все с радостью вызывают unsafePerformIOпри локальном использовании в чистом коде, так как структура данных так хорошо понятна, но..

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

25
задан Robin Green 20 May 2018 в 13:25
поделиться