在cabal文件的dependencies部分中:
Build-Depends: base >= 3 && < 5, transformers >= 0.2.0
Run Code Online (Sandbox Code Playgroud)
我应该做些什么
Build-Depends: base >= 3 && < 5, transformers >= 0.2.0 && < 0.3.0
Run Code Online (Sandbox Code Playgroud)
(对我依赖的软件包的版本设置上限)
或不?
我将使用一个真实的例子:Hackage上的"List"包(List monad转换器和类)
lift和liftIO使用ListT,因为它只是这些类变压器,0.2.X的实例我想应用程序应该总是设置上限,以便它们永远不会中断,所以这个问题只是关于库:
我应该使用依赖关系的上限版本吗?
有没有办法确保从hackage下载的真实性?据我所见,什么都没有.没有针对hackage的https,也没有针对tarball的(强)校验和,也没有签名.
那么:如何从hackage验证下载的真实性?
为文档代数/ 2.1.1.2/DOC/HTML示出了庞大数量的类型的类.
如何声明有问题的结构必须配备可交换的关联操作和单元/标识元素,但没有其他任何东西(反转,分配等)?
我在想
reduce :: Monoid m => (a -> m) -> [a] -> m
Run Code Online (Sandbox Code Playgroud)
但是Data.Monoid的实例不应该是可交换的,我希望我的函数的用户看到他们需要通过查看类型来使函数工作的可交换性.
我想将一个包上传到HackageDB,因为我是新手,我需要用户名和密码.它在这里说我应该写给罗斯帕特森.我已经尝试了几个星期,但没有得到回应.这只是需要一些时间,还是可能会改变过程?
我试着Control.Monad.Writer像这样导入模块:
import Control.Monad.Writer
Run Code Online (Sandbox Code Playgroud)
ghc 版本7.4.1给出以下错误:
Ambiguous module name `Control.Monad.Writer':
it was found in multiple packages: monads-tf-0.1.0.1 mtl-2.1.1
Run Code Online (Sandbox Code Playgroud)
有类似的问题和解决方法问题在这里.
尽管在这个帖子中给出了解决方案,但我的问题是:
这是cabal和ghc的标准配置吗?
- 如果是这样的话:默认情况下模块是否有两个包的原因?
- 如果不是:发生了什么(可能有)并且可以撤消?
如果这很重要:我正在使用Debian 7.3 wheezy并安装了haskell-platform软件包.此外,我使用安装了一些包cabal install.
提前谢谢了!
我安装了一个本地hackage-server用于开发192.168.1.100:8080.在我开发之后,打包cabal sdist我必须192.168.1.100:8080在我的浏览器上并手动上传包.
这非常繁琐,尤其是在多个包装正在进行等冲刺的情况下,我只是喜欢使用cabal upload.
对于名为my-pacakge.tar.gz的包,运行cabal upload结果为:
Uploading dist/my-package-0.1.1.0.tar.gz...
Error: dist/my-package-0.1.1.0.tar.gz: 404 Not Found
Error: Page not found
Sorry, it's just not here.
Run Code Online (Sandbox Code Playgroud)
我的cabal配置的修改部分如下所示:
...
remote-repo: hackage.haskell.org:http://hackage.haskell.org/packages/archive
remote-repo: my.hackage:http://192.168.1.100:8080/packages/archive
...
Run Code Online (Sandbox Code Playgroud)
第二行优先考虑本地hackage over hackage.haskell for cabal install
我cabal upload该如何设置上传到本地hackage?
随着时间的推移,我开发了一个混乱的系统级Haskell安装,我不知道如何彻底清理.但是在大多数情况下,这并不是很重要,因为我只是使用堆栈来管理每个项目的Haskell配置.但是,由于我的项目要求与我的系统Haskell设置不同,我想知道为Hackage构建和上传包的最佳方法是什么.
具体来说(1)我应该使用
stack exec -- cabal sdist
stack exec -- cabal upload
Run Code Online (Sandbox Code Playgroud)
而不是简单的
cabal sdist
cabal upload
Run Code Online (Sandbox Code Playgroud)
(2)是否有任何理由安装项目版本的cabal(带stack build cabal?)
或者是否有一些更好的基于堆栈的方法来构建和分发到Hackage,而不涉及cabal直接调用?
我试图找到是否可以在 Windows 系统中对控制台输出进行颜色处理。我找到了Console - Ansi,但我找不到有关 Windows 提示中的着色输出的任何信息。
我非常感谢有关我的问题的信息。