Использование GHC API для "пробного запуска" компиляции кода
Я работаю над довольно простым текстовым редактором для Haskell, и я хотел бы иметь возможность выделять статические ошибки в коде, когда пользователь нажимает "проверить".
Есть ли способ использовать GHC-API для "пробного запуска" компиляции файла haskell без фактической его компиляции? Я хотел бы иметь возможность взять строку и сделать все проверки нормальной компиляции, но без вывода. GHC-API был бы идеальным, потому что тогда мне не пришлось бы анализировать вывод командной строки из GHC, чтобы выделить ошибки и тому подобное.
Кроме того, возможно ли сделать эту проверку для строки, а не для файла? (Если нет, я могу просто записать его во временный файл, который не очень эффективен, но сработает).
Если это возможно, не могли бы вы предоставить или указать мне пример, как это сделать?
Этот вопрос задают то же самое, но это было три года назад, когда ответ был: "GHC-API является новым и пока нет хорошей документации". Поэтому я надеюсь, что статус изменился.
РЕДАКТИРОВАТЬ: ограничение "пробного запуска" заключается в том, что я делаю это в веб-настройке, где компиляция происходит на стороне сервера, поэтому я хотел бы избежать ненужных операций чтения / записи на диск каждый раз, когда пользователь нажимает кнопку "проверить". В любом случае исполняемый файл будет просто отброшен, пока у него не будет готовой к запуску версии.
1 ответ
Просто чтобы переместить это в ответ, это уже существует как ghc-mod, вот домашняя страница. Здесь уже есть интерфейсы для Emacs, Sublime и Vim, так что если вам нужны примеры того, как его использовать, их много. По сути, ghc-mod - это именно то, что вам нужно, обертка вокруг GHC API, разработанная для редакторов.