stu*_*420 0 haskell haskell-stack
我正在尝试编写一个合作伙伴模块,为此我想连接秒差距库。我将依赖项放在 package.yaml 中,但 parsec 仅在 Main.hs 中可见。
\n我的包.yaml
\ndependencies:\n- base >= 4.7 && < 5\n- parsec\nghc-options:\n- -Wall\n- -Wcompat\n- -Widentities\n- -Wincomplete-record-updates\n- -Wincomplete-uni-patterns\n- -Wmissing-export-lists\n- -Wmissing-home-modules\n- -Wpartial-fields\n- -Wredundant-constraints\n\nlibrary:\n source-dirs: src\n dependencies :\n - parsec\n\nexecutables:\n haskell-lab4-exe:\n main: Main.hs\n source-dirs: app\n ghc-options:\n - -threaded\n - -rtsopts\n - -with-rtsopts=-N\n dependencies:\n - haskell-lab4\n - parsec\n\ntests:\n haskell-lab4-test:\n main: Spec.hs\n source-dirs: test\n ghc-options:\n - -threaded\n - -rtsopts\n - -with-rtsopts=-N\n dependencies:\n - haskell-lab4\nRun Code Online (Sandbox Code Playgroud)\n项目的结构如下(它是使用创建的stack new)
|-app\n| \\- Main.hs\n|\n|-src\n| \\-Parser\n| | \\-Myfile.hs <-- I need parsec in this file\n| | \n| |-Lib.hs\n|\n|-test\nRun Code Online (Sandbox Code Playgroud)\n错误:
\nCould not find module \xe2\x80\x98Text.Parsec.String.Combinator\xe2\x80\x99\n Perhaps you meant Text.Parsec.Combinator (from parsec-3.1.15.0)\n Use -v (or `:set -v` in ghci) to see a list of the files searched for.\nRun Code Online (Sandbox Code Playgroud)\n
您确定您不只是使用了错误的模块名称吗?
\n阅读错误消息的这一部分:
\nCould not find module \xe2\x80\x98Text.Parsec.String.Combinator\xe2\x80\x99\n Perhaps you meant Text.Parsec.Combinator (from parsec-3.1.15.0)\nRun Code Online (Sandbox Code Playgroud)\n这表明它正在查看该parsec包,只是找不到模块名称Text.Parsec.String.Combinator。如果它根本没有看到该包,它就无法为您提供该包的任何建议,如果它“意识到”该包,同时又被告知不要依赖它,它会说类似“来自隐藏包parsec-3.1.15.0”。
事实上,该版本的 hackage 列表parsec没有显示任何名为 的模块Text.Parsec.String.Combinator。有Text.Parsec.String,但该前缀下没有模块。就这样Text.Parsec.Combinator(如错误消息所示)。
Main.hs你说你身上有什么东西在起作用?