Zauważyłem, że Data.UnionFind używa monopolu IO, aby zapewnić wskaźniki za pośrednictwem IORefs. Wyobrażam sobie, wszyscy szczęśliwie nazywają unsafePerformIO
, gdy używają go lokalnie w czystym kodzie, ponieważ struktura danych jest tak dobrze zrozumiała, ale ..Unikanie IORefs w czystym kodzie
Czy istnieje kanoniczne czystsze podejście do takich struktur danych? Być może otoki wokół IO powodują, że nieuniknione jest, że "szukanie" jest mniej niebezpieczne, przez zabronienie większości operacji IO?
Uważam, że pakiet jest przeznaczony do użytku w Monadzie IO. Większość Haskellerów pozostaje tak daleko od "unsafePerformIO", jak to tylko możliwe. –