unsafePerformIO i inicjalizacja biblioteki FFI
Tworzę moduł FFI do biblioteki w C, która chce wywołać jednorazową, niereentrantową funkcję, zanim cokolwiek innego będzie. To wywołanie jest idempotentne, ale stanowe, więc mogłem po prostu zadzwonić w każdym wywołaniu Haskella. Ale jest powolny i ze względu na brak ponownego powrotu może powodować konflikty.
Czy to jest dobry moment, aby użyć unsafePerformIO? Mógłbym zawinąć Boola w niebezpieczny IORef lub MVar, aby te wywołania inicjalizacji były idempotentne, ignorując kolejne wywołania (wywołania, gdy globalnym, ukrytym stanem IORef jest False).
Jeśli nie, jaki jest właściwy sposób, aby to zrobić?