在官方教程Haskell in 5 steps中,有一个示例导入了一个库:
import Control.Parallel
然后我使用ghc进行编译:
ghc parallel.hs -o parallel -O2 --make -threaded -rtsopts
就像本教程告诉我的那样。 (我的文件名是parallel.hs)但是我得到了:
parallel.hs:1:1: error:
Could not find module ‘Control.Parallel’
Use -v to see a list of the files searched for.
|
1 | import Control.Parallel
| ^^^^^^^^^^^^^^^^^^^^^^^
然后我对其进行了堆栈溢出并找到了this question。所以我:
cabal new-install parallel --lib
并获得:
Resolving dependencies...
Up to date
然后我再次编译它,但是遇到了同样的错误。 如何解决呢?我错过任何命令行参数了吗?
好吧,在cabal install parallel
之后,库被导入,程序被成功编译并按预期运行。
我将参考cabal的文档,了解install
和new-install
之间的区别
答案 0 :(得分:3)
正如@Lorenzo指出的那样,cabal install
可以正常工作。使用cabal new-install
时,您应该已经看到一条警告,提示您忘记了--lib
,因为parallel
不包含可执行文件,必须通过--lib
显式安装库。完整的功能命令集是:
cd $(mktemp -d)
cabal update && cabal new-install --lib parallel
cat <<EOF > parallel.hs
module P where
import Control.Parallel
EOF
ghc -c parallel.hs
ls parallel.o parallel.hi
屈服:
% cd $(mktemp -d)
% cabal update && cabal new-install --lib parallel
... snipped output ...
% cat <<EOF > parallel.hs
module P where
import Control.Parallel
EOF
% ghc -c parallel.hs
Loaded package environment from /home/tommd/.ghc/x86_64-linux-8.6.4/environments/default
% ls parallel.o parallel.hi
parallel.hi parallel.o