Cabal 不断有依赖性问题.这真的很累人.到目前为止,我已经尝试了很多工作,这是我尝试安装snap:
$ sudo cabal install snap-server Resolving dependencies... cabal: cannot configure ListLike-1.1.0. It requires mtl >=1.1.0 && 1.2 For the dependency on mtl >=1.1.0 && 1.2 there are these packages: mtl-1.1.0.0, mtl-1.1.0.1, mtl-1.1.0.2 and mtl-1.1.1.0. However none of them are available. mtl-1.1.0.0 was excluded because mtl-2.0.0.0 was selected instead mtl-1.1.0.0 was excluded because monads-fd-0.1.0.3 requires mtl ==2.* mtl-1.1.0.1 was excluded because mtl-2.0.0.0 was selected instead mtl-1.1.0.1 was excluded because monads-fd-0.1.0.3 requires mtl ==2.* mtl-1.1.0.2 was excluded because mtl-2.0.0.0 …
我有两个版本在他们的一些依赖项之前意外上传:
从那时起,他们的依赖关系早已得到满足,但是直到今天还没有生成他们的文档.
如何触发Hackage对这些版本的重新评估?上传新版本是解决这种愚蠢问题的唯一方法吗?
我在"维护者的角落"里找不到任何相关内容.
与其他程序员共享Haskell库的标准方法是创建一个Cabal包并将其上传到http://hackage.haskell.org.我写了一个我想分享的图书馆,我已经成功创建了一个Cabal软件包,使用在线指南来创建cabal文件.我已经构建了包并在本地安装 - 工作正常.现在我想将它上传到Hackage.但是cabal upload想要一个.tar.gz文件.有大量的Cabal文档,我找不到应该进入这个.tar.gz或者我应该如何创建它.
谁知道,或者知道我在哪里可以找到,如何创建一个能够正常工作的.tar.gz cabal upload?
如下所示:http://www.evanmiller.org/how-not-to-sort-by-average-rating.html
这是Ruby代码本身,在Statistics2库中实现:
# inverse of normal distribution ([2])
# Pr( (-\infty, x] ) = qn -> x
def pnormaldist(qn)
b = [1.570796288, 0.03706987906, -0.8364353589e-3,
-0.2250947176e-3, 0.6841218299e-5, 0.5824238515e-5,
-0.104527497e-5, 0.8360937017e-7, -0.3231081277e-8,
0.3657763036e-10, 0.6936233982e-12]
if(qn < 0.0 || 1.0 < qn)
$stderr.printf("Error : qn <= 0 or qn >= 1 in pnorm()!\n")
return 0.0;
end
qn == 0.5 and return 0.0
w1 = qn
qn > 0.5 and w1 = 1.0 - w1
w3 = -Math.log(4.0 * …Run Code Online (Sandbox Code Playgroud) 它看起来像有偶尔发布的报告,详细的下载一些顶级包(http://haskellwebnews.wordpress.com/2011/03/16/hackage-stats-the-past-year/).
是否可以查看单个包的更新统计数据?
一年来,我一直是新秀哈斯克勒(我认为,"新秀哈斯克勒").我编写了很少的haskell程序(例如,一个非常简单的蛇游戏)但是当我必须使用某些库时,包依赖和ghc失败的版本对我来说很难.
我认为选择正确的ghc版本是一门艺术.
太新了,库也失败了(例如,yesod最近更新到7.4; grapefruit-ui-gtk目前失败了).
太旧了,库已经过时但尚未得到支持.
HackageDB及其开发者非常棒,但我觉得笨拙并且不知道开发严肃程序的正确方法.
我应该做什么?我是不是很缺乏经验?艰难的方式是唯一的方法吗?
(对不起,如果问题太笼统)
我想在Hackage上找到从给定包导入给定模块的所有模块.作为一个有用的原因的例子,我想看看Language.Haskell.HLint从hlint包中导入的所有模块,因为我想弃用该模块,但我对它当前的使用方式感兴趣.
是否有任何索引(理想情况下是在线)跟踪此类导入关系?
我想知道Ord实例声明(a,b),并且我想快速查找hackage以确认我的直觉,比较是第一次a,然后,在相等的情况下,b.我特意去了.由于hackage有链接到数据声明和函数的源代码,我假设还有实例声明的源代码,但我找不到它们.有没有理由说他们不在那里,或者我只是不够努力?type Answer = Either Explanation Directions:)
更新:这个问题现在已经过时了.Hackage现在使用Haskell版本7.10.2进行构建,因此不会发生以下故障.这一变化似乎也破坏了答案中提到的一些脚本.
如何将我的Haskell软件包的文档提供给Hackage?
我理解Hackage会构建它们,但是我得到了一个错误
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: MyPackage-0.1.0.2 (user goal)
next goal: base (dependency of MyPackage-0.1.0.2)
rejecting: base-4.7.0.1/installed-e4b... (conflict: MyPackage => base>=4.8 &&
<4.9)
rejecting: base-4.8.1.0, 4.8.0.0, 4.7.0.2, 4.7.0.1, 4.7.0.0, 4.6.0.1, 4.6.0.0,
4.5.1.0, 4.5.0.0, 4.4.1.0, 4.4.0.0, 4.3.1.0, 4.3.0.0, 4.2.0.2, 4.2.0.1,
4.2.0.0, 4.1.0.0, 4.0.0.0, 3.0.3.2, 3.0.3.1 (global constraint requires
installed instance)
Dependency tree exhaustively searched.
Run Code Online (Sandbox Code Playgroud)
我无法降级我的软件包的要求(这似乎是自动构建的障碍),我看到一些软件包说"用户上传的文档".但是,任何构建尝试都会失败(见下文).
如何将我的Haskell软件包的文档提供给Hackage?特别是,我自己上传它们需要做什么?
我试过了
$ cp -R ./dist/doc/html/MyPackage/ MyPackage-0.1.0.2-docs
$ tar cvzf --format=ustar -f MyPackage-0.1.0.2-docs.tar.gz MyPackage-0.1.0.2-docs
$ curl -X PUT -H 'Content-Type: …Run Code Online (Sandbox Code Playgroud) hackage ×10
haskell ×10
cabal ×3
dependencies ×1
ghc ×1
haddock ×1
install ×1
ruby ×1
statistics ×1