如何在haskell中安装和导入库?

时间:2019-07-10 13:02:54

标签: haskell

在官方教程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的文档,了解installnew-install之间的区别

1 个答案:

答案 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