Как я могу скомпилировать и запустить фрагмент кода сторонней стороны в Haskell?

userDefinedFunction = "\x -> x*x :: Int"
main = do
    f <- complileFunction userDefinedFunction :: Int -> Int
    let results = map f [1,2,3,4]
    print $ show results

Как сделать это безопасно? userDefinedFunction должен быть ненадежным сторонним кодом. Он должен быть построен для быстрого, оптимизированного кода, но не должен иметь доступ к системе напрямую.

Я предполагаю, что он должен объединить Safe Haskell и System.Eval.Haskell. Существуют ли какие-либо проекты или учебные пособия, охватывающие это?

Ответы