инициализация библиотеки unsafePerformIO и FFI

Я создаю модуль FFI для библиотеки в C, которая хочет, чтобы одноразовая не реентерабельная функция вызывалась раньше, чем что-либо еще. Этот вызов идемпотентен, но с состоянием, так что я мог бы просто вызывать его при каждом вызове на Haskell. Но это медленно и из-за невступления может вызвать конфликты.

Так что это подходящее время для использования unsafePerformIO? Я мог бы обернуть Bool в небезопасный IORef или MVar, чтобы сделать эти вызовы инициализации идемпотентными, игнорируя последующие вызовы (вызовы, где глобальное скрытое состояние IORef равно False).

Если нет, как правильно это сделать?