我看到有一个名为Cabal的很好的包系统可以处理依赖项解析.所以我正在尝试安装它,所以我可以让它为我安装Haskell OpenGL模块.但是,Cabal本身有很多依赖.有没有办法在不手动解析所有依赖项的情况下安装Cabal?我尝试运行引导程序,但似乎没有这样做,因为它报告缺少模块parsec和网络(反过来又有自己的依赖项).
在mtl模块安装到我之前,手动构建dep让我大约3个深度:
user@machine:~/haskell/mtl-1.1.0.2$ runghc Setup build
Preprocessing library mtl-1.1.0.2...
Building mtl-1.1.0.2...
Control/Monad/Cont.hs:74:7:
Could not find module `Control.Monad':
Perhaps you haven't installed the profiling libraries for package base?
Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Ubuntu 10.04上通过cabal安装quickcheck 2。无论我尝试做什么,我总是会遇到以下问题:
$ cabal list quickcheck
* QuickCheck
Synopsis: Automatic testing of Haskell programs
Latest version available: 2.1.1.1
Latest version installed: 1.2.0.0
Homepage: http://www.cse.chalmers.se/~koen
License: BSD3
Run Code Online (Sandbox Code Playgroud)
这是在干净的Ubuntu 10.04上,仅安装了ghc6和cabal-install apt软件包。在尝试安装quickcheck之前,我已经通过cabal安装了二进制软件包。
它告诉我2.1.1.1可用,但只能安装1.2.0.0。为什么我无法真正安装最新版本?
有可能得到阴谋
我知道你可以cabal unpack用来查看特定包的来源,但我不知道如何实现上述.另请注意,在这篇文章中无法让cabal更新到公司网络内部工作,有人提到这可以做到,但说明对我来说不够具体.
我才开始学习Haskell.我读过它是一种纯函数式语言,其中的所有内容都是不可变的.因此输入输出,写入和读取数据库之类的东西会导致状态的可变性.我知道Haskell中有一个名为monads的东西允许在Haskell中使用命令式功能IO Monad.但我很有意思的是Haskell的一切必要性是在monads的帮助下实现的吗?在HackageDB上有很多软件包可以使用3d图形,数据库,解析HTML,编写Web服务器等等.
这一切背后的一般理念是什么?是什么让Haskell保持纯粹并同时适用于写这一切?我希望有人能为我说清楚.提前致谢!
有没有办法搜索依赖于包X的Hackage包(对于任何包X)?如果能够在野外使用软件包以了解其功能,那将会很棒.(对于[试图]解决阴谋地狱也很有用.)
目前,当我想更新我的一个hackage包时,我会经历这个过程.
当然,如果前一步骤成功,我只想做这些步骤.
我认为其他人有类似的工作流程,有什么能做所有这些步骤吗?我可能在脚本中做(1),(3)和(4),虽然(2)我不太确定(也就是检查travis-ci的结果),但这似乎是一个常见的问题我想知道是否有人已经解决了它所以我不重新发明轮子.
我正在编写一个小型 Haskell 程序,需要导入两个模块Control.Functor.Algebra和Control.Morphism.Hylo.
我搜索了谷歌。这两个模块可以在category-extras中找到。
所以我添加category-extras到package.yaml:
dependencies:
- base >= 4.7 && < 5
- category-extras
Run Code Online (Sandbox Code Playgroud)
然后调用stack build,却出现错误:
E:\work-category-theory\quick-sort>stack build
Stack has not been tested with GHC versions above 8.6, and using 8.8.3, this may fail
Stack has not been tested with Cabal versions above 2.4, but version 3.0.1.0 was found, this may fail
Error: While constructing the build plan, the following exceptions were
encountered:
In the dependencies for …Run Code Online (Sandbox Code Playgroud) 我是 Haskell 堆栈的新手,想知道如何找出包含特定模块的包的名称。
目前,我想使用Data.Tuple.Extra(fst3)(https://hackage.haskell.org/package/extra-1.7.9/docs/Data-Tuple-Extra.html)并想知道我应该在下面写什么
$ stack install ????
Run Code Online (Sandbox Code Playgroud)
我已经安装了该tuple软件包,但是它似乎不包含该Extra部分。
到目前为止,我发现的有关安装软件包的所有 Internet 资源都说“要使用 Blahblah.Anything.Something,您需要安装该foofoo软件包”。. . 怎么会知道呢?我搜索了 Stackage,但它只显示了 的文档,Data.Tuple.Extra我仍然找不到包的名称。
编辑:正如KABuhr在她/他的回答中指出的那样,stack install对于上述情况是错误的命令。使用stack build来代替。
Hackage已经能够显示Markdown自述文件一段时间了.
但是正如人们可以在Hackage页面hpack上看到的那样,Hackage似乎不支持与GitHub相同的表语法.
#### <a name="flags"></a>Flags
| Hpack | Cabal | Default | Notes |
| --- | --- | --- | --- |
| `description` | `description` | | Optional |
| `manual` | `manual` | | Required (unlike Cabal) |
| `default` | `default` | | Required (unlike Cabal) |
Run Code Online (Sandbox Code Playgroud)
所以,我想知道: