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ć?

questionAnswers(2)

yourAnswerToTheQuestion