Подтвердить что ты не робот

Создание Haskell REPL в приложении Haskell

Я пытаюсь внедрить Haskell REPL в одном из моих приложений Haskell. Идея заключалась бы в том, что по умолчанию будет загружаться только подмножество библиотек Haskell, плюс мой собственный набор функций, и пользователь будет использовать их для взаимодействия с окружающей средой.

Чтобы решить эту проблему, я знаю, что одним из способов было бы создать (mini-) анализатор анализатора Haskell + и отобразить мои функции парсера мини-Haskell для реальных функций Haskell, но я уверен, что есть лучший способ сделать это.

Есть ли хороший и чистый способ создания REPL для Haskell с использованием Haskell?

4b9b3361

Ответ 1

Несколько вещей, которые уже существуют:

  • GHCi, конечно, и в том смысле, что он может смотреть, как он реализован или может использовать его напрямую (т.е. ваш REPL просто поговорит с GHCi через stdin/stdout).
  • полный API GHC, который позволяет вам подключаться к GHC и позволять ему делать все тяжелую работу для вас - загрузка файлов, зависание зависимостей, разбор, проверка типов и т.д.
  • hint, который является оберткой вокруг подмножества API GHC, с акцентом на интерактивную интерпретацию, а не на компиляцию. похоже, соответствует тому, что вы хотите сделать.
  • mueval, оценщик с ограничениями на загруженные модули, использование ресурсов и т.д., в основном "безопасный" интерактивный режим. Это то, что использует lambdabot, если вы когда-либо были в IRC-канале #haskell.

Все вышесказанное предполагает, что вы не хотите иметь дело с написанием интерпретатора Haskell самостоятельно, что, вероятно, так и происходит.