私は C のライブラリに FFI モジュールを作成しています。これは、1 回限りの再入不可の関数を他の何よりも先に呼び出す必要があります。この呼び出しはべき等ですが、ステートフルなので、すべての Haskell 呼び出しで呼び出すことができます。しかし、これは遅く、再入不可であるため、競合が発生する可能性があります。
では、これは unsafePerformIO を使用する適切な時期でしょうか? 安全でない IORef または MVar で Bool をラップして、後続の呼び出し (グローバルな非表示の IORef 状態が False である呼び出し) を無視することにより、これらの初期化呼び出しをべき等にすることができます。
そうでない場合、これを行う正しい方法は何ですか?