我有一个应用程序,由于各种原因,我需要运行任意的,用户提供的代码。 (SafeHaskell使这很好,更安全)。我看过插件包,非常适合从光盘上的.hi文件加载。
但是,对于我的程序设计,如果我可以将这些用户程序存储在数据库中,然后将它们直接编译为我可以在程序中使用的函数,那将是理想的。
因此,如果我正在编译的函数具有以下类型:
someFunction :: MyIn -> MyOut
我正在寻找一些能从字符串生成该函数的函数:
hotCompile :: String -> IO (MyIn -> MyOut)
其中string包含“someFunction”的haskell代码。
有没有人知道是否有办法做到这一点,最好使用插件包?我稍微遇到过GHC API,但我不太了解它以及它与此有何关系。
请注意,我已尝试过提示,但它不适合我的应用程序,因为它不是线程安全的。