さまざまな理由で、任意のユーザー提供コードを実行する必要があるアプリケーションがあります。(SafeHaskell はこれを素晴らしく安全にします)。これは、ディスク上の .hi ファイルからロードするのに非常に便利です。
ただし、私のプログラム設計では、これらのユーザー プログラムをデータベースに保存し、プログラムで使用できる関数に直接コンパイルできれば理想的です。
したがって、コンパイルしている関数に次のタイプがあるとします。
someFunction :: MyIn -> MyOut
文字列からその関数を生成する関数を書きたいと思っています:
hotCompile :: String -> IO (MyIn -> MyOut)
ここで、string には「someFunction」の haskell コード code が含まれています。
できればプラグインパッケージを使用して、これを行う方法があるかどうか誰かが知っていますか? 私はGHC APIに少し出くわしましたが、それについて、そしてそれがこれにどのように関係するのかについてはあまり知りません。
ヒントを試してみましたが、スレッドセーフではないため、私のアプリケーションには適していません。