Я создаю модуль FFI для библиотеки в C, которая хочет, чтобы одна-единственная, не возвращающая функцию функция вызывалась раньше всего. Этот вызов является idempotent, но stateful, поэтому я мог бы просто позвонить ему в каждом вызове Haskell. Но он медленный и из-за не-повторного вмешательства, это может вызвать конфликты.
Итак, это подходящее время для использования unsafePerformIO? Я мог бы обернуть Bool в небезопасный IORef или MVar, чтобы эти именованные вызовы идемпотент проигнорировали последующие вызовы (вызовы, где глобальное, скрытое состояние IORef - False).
Если нет, каков правильный способ сделать это?