Inicialização de biblioteca insegura e FFI
Eu estou criando um módulo FFI para uma biblioteca em C que deseja que uma função não reentrante 1 vez seja chamada antes de qualquer outra coisa. Esta chamada é idempotente, mas com estado, então eu poderia chamá-la em todas as chamadas do Haskell. Mas é lento e, devido à não reentrância, pode causar conflitos.
Então, este é o momento certo para usar o unsafePerformIO? Eu poderia envolver um Bool em um IORef ou MVAR inseguro para tornar essas chamadas de inicialização idempotentes ignorando as chamadas subsequentes (chamadas em que o estado IORef oculto e global é False).
Se não, qual é o caminho certo para fazer isso?