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