我遇到了 youtube video,用于通过在项目中的
.cabal
中指定来访问外部包。但如何访问单个文件中的包。
假设我想写一个简单的文件并在其中做一些事情。我可以导入外部包,例如
System.Random
吗?我可以使用 ghc
编译它而不出错吗?
注意:在本例中我没有使用该项目。所以我没有使用
cabal
。只有单个文件并使用 ghc 编译或在 ghci 中加载
System.Random
模块[Hackage]在random
包[Hackage]中定义。
您可以将
random
添加到 cabal 文件中的依赖项中:
-- …
library
-- …
build-depends:
base >= 4.7 && < 5
, random >=1.0 && <2.0
-- …
如果您使用
cabal build
或 Haskell 堆栈构建它,那么 stack build
,它将下载包并将其暴露给项目的模块,以便您可以导入它。
在这种情况下我没有使用该项目。所以我没有使用 cabal。只有单个文件并使用 ghc 编译或在 ghci 中加载
如果您不使用
cabal
(或基本构建于 cabal
之上的 Haskell 堆栈等工具),则不需要使用 .cabal
文件。
在这种情况下,您可以使用要公开的包列表来调用编译器:
ghc -package random MyFile.hs
然后它会在包数据库中查找,您可以定义一个不同的数据库,您可以在其中下载并构建要公开给项目的包。