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