我正在尝试安装一个小的Haskell包。
我使用stack
创建了一个项目:
stack new my-project simple
字符串
这很好。我能够构建和运行代码。
但后来我偶然发现需要使用其他库。在互联网上搜索,我发现我应该使用cabal
来做到这一点。首先安装它:
brew install cabal-install
型
然后更新它:
cabal update
型
然后试着用它安装一个库:
cabal install --lib split
型
这导致:
Warning: Unknown/unsupported 'ghc' version detected (Cabal 3.10.1.0 supports
'ghc' version < 9.8): /usr/local/bin/ghc is version 9.8.1
Warning: Unknown/unsupported 'ghc' version detected (Cabal 3.10.1.0 supports
'ghc' version < 9.8): /usr/local/bin/ghc is version 9.8.1
Resolving dependencies...
Build profile: -w ghc-9.8.1 -O1
In order, the following will be built (use -v for more details):
- split-0.2.4 (lib) (requires download & build)
Downloading split-0.2.4
Downloaded split-0.2.4
Starting split-0.2.4 (lib)
Building split-0.2.4 (lib)
Failed to build split-0.2.4.
Build log ( /Users/nene/.cache/cabal/logs/ghc-9.8.1/splt-0.2.4-d1ef7190.log ):
Configuring library for split-0.2.4..
Preprocessing library for split-0.2.4..
Building library for split-0.2.4..
[1 of 2] Compiling Data.List.Split.Internals ( src/Data/List/Split/Internals.hs, dist/build/Data/List/Split/Internals.o, dist/build/Data/List/Split/Internals.dyn_o )
[2 of 2] Compiling Data.List.Split ( src/Data/List/Split.hs, dist/build/Data/List/Split.o, dist/build/Data/List/Split.dyn_o )
ld: warning: directory not found for option '-L/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/lib'
ld: unknown option: -no_fixup_chains
clang: error: linker command failed with exit code 1 (use -v to see invocation)
`clang' failed in phase `Linker'. (Exit code: 1)
Error: cabal: Failed to build split-0.2.4. See the build log above for
details.
型
似乎与阴谋集团版本(3.10.1.0)和GHC版本(9.8.1)有冲突。不知道如何解决它。
此外,我有一个stack
创建的my-project.cabal
文件。在里面我看到:
cabal-version: 2.2
型
如果我的心智模型是正确的,那么stack
使用它自己独立的GHC安装,(可能)也使用它自己的Cabal安装。
我尝试创建package.yaml
文件(根据Silvio Mayolo的建议),内容如下:
dependencies:
- split
型
但这似乎没有什么效果,编译只是抱怨找不到Data.List.Split
模块(split
库应该提供这个模块)。
**PS:**目前我只是简单地实现了我想自己导入的小函数。但如果能弄清楚如何安装一些Haskell库就更好了。
2条答案
按热度按时间xqnpmsa81#
要将依赖项添加到使用简单模板创建的项目中,您需要将其添加到模板创建的
.cabal
文件中的build-depends
字段-在您的示例中为my-project.cabal
。之后,您的cabal文件应该如下所示:
字符串
rsaldnfx2#
如果你只是想快速尝试一些东西,那么
cabal run my-script.hs
,其中my-script.hs
是字符串
是最简单的(和单个文件)解决方案。
更多注意事项:
package.yaml
是基于yaml的.cabal文件生成器hpack的源代码。(如果在package.yaml
所在的同一个文件夹中运行hpack
,它将从中创建my-package.cabal
。)Stack还依赖于hpack,如果在项目中找到package.yaml
文件,则默认情况下会运行它cabal.project
文件,它可以支持多包项目),所以人们可以只使用它