Tôi nhận thấy rằng Data.UnionFind sử dụng đơn nguyên IO để cung cấp con trỏ qua IORef. Tôi tưởng tượng mọi người vui vẻ gọi unsafePerformIO
khi sử dụng nó cục bộ trong mã thuần, vì cấu trúc dữ liệu được hiểu rất rõ, nhưng ..Tránh IORef trong mã thuần túy
Có cách tiếp cận sạch hơn về mặt cấu trúc dữ liệu như vậy không? Có lẽ một wrapper xung quanh IO mà làm cho không thể tránh khỏi unsafePerformIO
ít không an toàn "tìm kiếm" bằng cách cấm hầu hết các hoạt động IO?
Tôi tin rằng gói được dự định sẽ được sử dụng bên trong đơn nguyên IO. Hầu hết các Haskellers ở cách xa 'unsafePerformIO' càng tốt. –