Проблема:
Я хотел бы иметь возможность интерпретировать любой код Haskell во время выполнения, а также код, который не связан одной строкой.
Прямо сейчас я использую hint, чтобы сделать это ниже, что работает с отдельными строками:
html :: String -> IO String
html code = do
r <- runInterpreter $ do
setImports ["Prelude"]
interpret code (as :: () -> String)
case r of
Left err -> return $ show err
Right func -> return $ func()
Пример:
Если code
сверху равно \() -> "Hello World"
, это работает.
Но если code
выглядит примерно так, как показано ниже, мой приведенный выше код не работает: (Обновление: работает).
\() -> let concatString :: String -> String -> String
concatString str1 str2 = str1 ++ str2
in concatString "Hello" "World"
Вопрос:
Как мне интерпретировать многострочные строки Haskell во время выполнения, используя подсказку или любую другую библиотеку?
Обновлять
Это работает - я сделал ошибку в исходном выражении (которую я сейчас исправил).