Ошибка компоновщика GHC (стек)

Я новичок в Haskell и пытаюсь использовать стек для создания приложения.

Однако stack build выдает мне ошибки компоновщика при выполнении:

Linking .stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/sim-exe/sim-exe ...
[...]/.stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/libHSsim-0.1.0.0-EmdGqYS9bXF9VefempSPEG.a(Lib.o):(.text+0x98f5): undefined reference to `simzuEmdGqYS9bXF9VefempSPEG_Linter_lint_info'
[...]/.stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/libHSsim-0.1.0.0-EmdGqYS9bXF9VefempSPEG.a(Lib.o):(.data+0x5f0): undefined reference to `simzuEmdGqYS9bXF9VefempSPEG_Linter_lint_closure'
collect2: error: ld returned 1 exit status

Глядя на метки, я понимаю, что это связано с замыканием в этой функции:

lint :: String -> [LintError]
lint source = let
  handleParseError :: ParseError -> [LintError]
  handleParseError e = [LintError (fromSourcePos $ errorPos e) $ format e]
  in
    case parseSim source of
      (Left error) -> handleParseError error
      (Right prog) -> lintProgram prog

А там точно не замыкание? Если я заменю реализацию lint на

lint _ = []

он компилируется нормально.

Я могу выполнить stack ghci и поиграть с полной реализацией lint. Почему не получается связать?


person DeX3    schedule 22.10.2015    source источник
comment
Возможно модуль не входит в файл cabal?   -  person Yuras    schedule 22.10.2015
comment
@Yuras да, это было так ... Я добавил модуль под exposed-modules, и теперь он работает - я просто не знал, что должен это сделать. Спасибо   -  person DeX3    schedule 22.10.2015
comment
@ DeX3 DeX3 Не могли бы вы написать это как ответ и принять его?   -  person Chris Martin    schedule 17.01.2016


Ответы (1)


Как правильно указал yuras, добавление модуля под exposed-modules в файл кабалы решает проблему.

person DeX3    schedule 29.04.2016