2016-09-05 3 views
2

У меня есть библиотека, и я хочу, чтобы мой исполняемый файл был в значительной степени тем, что я получаю, когда у меня есть cabal repl, т.е. я хочу, чтобы пользователь мог использовать выражения Haskell и импортировать модули и использовать типы данных, определенные в моей библиотека.Можно ли загрузить скомпилированный код для подсказки?

Возможно ли это? Я понимаю, что hint может работать только с исходными файлами (которые недоступны для пользователя), но я не уверен. Когда я попытался загрузить модули из своей библиотеки или из пакетов cabal, которые установлены на глобальном уровне, у меня появилось неопределенное сообщение об ошибке, в котором говорится, что модуль является модулем пакета. Фактически, почти все, что я пишу, тоже будет делать:

ghci> runInterpreter $ loadModules ["Not.A.Package.Module"] 
Left (WontCompile [GhcError {errMsg = "<no location info>: error:\n module \8216Not.A.Package.Module\8217 is a package module"}]) 

Есть ли способ сделать это? (P.S. Я использую GHC 8.0.1 и plugins не поддерживает его, и у меня также есть идея, что это очень мертвый проект. Если есть другой способ, но hint & plugins Я открыт для него).

+0

Может GHCI сами импортировать эти модули? –

ответ

0

Вы можете сделать себе стек и поместить свой код, на который вы зависите от Hackage.

Затем в свой проект добавьте этот пакет в свой раздел build-depends файла *.cabal. Затем просто импортируйте необходимый материал, используя setImportsQ от hint.

Пример может быть в зависимости от Chart и Chart-diagrams:

build-depends:  base 
        ... 
        , Chart 
        , Chart-diagrams 

, а затем в вашей оценке:

setImportsQ[ ("Prelude",Nothing) 
      , ("Graphics.Rendering.Chart.Easy", Nothing) 
      , ("Graphics.Rendering.Chart.Backend.Diagrams", Nothing) 
      ] 
Смежные вопросы