我正在尝试编写一个parter模块,为此我想连接parsec库。我将依赖项放在package.yaml中,但parsec只在Main.hs中可见。
我的包裹yaml
dependencies:
- base >= 4.7 && < 5
- parsec
ghc-options:
- -Wall
- -Wcompat
- -Widentities
- -Wincomplete-record-updates
- -Wincomplete-uni-patterns
- -Wmissing-export-lists
- -Wmissing-home-modules
- -Wpartial-fields
- -Wredundant-constraints
library:
source-dirs: src
dependencies :
- parsec
executables:
haskell-lab4-exe:
main: Main.hs
source-dirs: app
ghc-options:
- -threaded
- -rtsopts
- -with-rtsopts=-N
dependencies:
- haskell-lab4
- parsec
tests:
haskell-lab4-test:
main: Spec.hs
source-dirs: test
ghc-options:
- -threaded
- -rtsopts
- -with-rtsopts=-N
dependencies:
- haskell-lab4
项目的结构如下所示(它是使用stack new
创建的)
|-app
| \- Main.hs
|
|-src
| \-Parser
| | \-Myfile.hs <-- I need parsec in this file
| |
| |-Lib.hs
|
|-test
错误:
Could not find module ‘Text.Parsec.String.Combinator’
Perhaps you meant Text.Parsec.Combinator (from parsec-3.1.15.0)
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
1条答案
按热度按时间kninwzqo1#
你确定你不是用错了模块名吗?
阅读错误消息的以下部分:
这表明它 * 正在 * 看到
parsec
包,只是找不到模块名Text.Parsec.String.Combinator
.如果它根本没有看到这个包,它就不能从这个包中提供任何建议,如果它“知道”这个包,同时也被告知不要依赖它,它会说类似于“来自隐藏包parsec-3.1.15.0
“的话.实际上the hackage listing for that version of
parsec
没有显示任何名为Text.Parsec.String.Combinator
的模块,有Text.Parsec.String
,但是没有模块在这个前缀下,还有Text.Parsec.Combinator
(如错误消息所示)。您说
Main.hs
中的哪些部分工作正常?