Я новичок в 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
. Почему не получается связать?
exposed-modules
, и теперь он работает - я просто не знал, что должен это сделать. Спасибо - person DeX3   schedule 22.10.2015