标签: hackage

哪个Haskell包包含给定的模块

我知道一个Haskell模块名称,但我无法弄清楚它是在什么包中定义的.这很糟糕,因为如果没有暴露这个模块的包,我就无法编译.

具体来说,我无法找到Text.Regex,但我想知道如何解决这个问题.

haskell cabal hackage

13
推荐指数
1
解决办法
1819
查看次数

为什么Haddock文档没有出现在Hackage上?

我有一个关于Hackage软件包,它已经生成了文件,但它没有出现在Hackage页面上.我能够成功上传所有内容,但文档没有显示出来.

我在Leksah IDE中使用cabal haddock或生成文档Package > Build Documentation.

当我去Package > Open DocLeksah时,它找不到它,因为它正在寻找,dist/doc/html/hspec/hspec/index.html但生成的文件是dist/doc/html/hspec/index.html.我认为Hackage也在寻找同一个地方.

我猜我的源文件不在预期的位置,但我不知道它们应该如何.

源和目录结构可以在https://github.com/trystan/hspec找到.

haskell cabal hackage haddock leksah

13
推荐指数
1
解决办法
1432
查看次数

非维护者上传到Hackage

我有一个Hackage包依赖于第三方包,它不是建立在较新版本的GHC(> = 7.2)上.只需一行补丁(LANGUAGEpragma)即可解决其他软件包的问题.我将补丁发送到上游两次,但没有收到任何反馈.问题是我的包不能安装,直到依赖项得到修复.

我本来可以上传固定版本的depenency软件包(带有一个小版本),但我想听听社区对这种非维护者上传的态度.同样,我不想更改库接口,我只添加一个新的编译标志,使其可以再次构建.

  • 是否允许和容忍非维护者上传到Hackage?
  • Hackage上的包的分支是更好的方法吗?

haskell hackage

13
推荐指数
2
解决办法
348
查看次数

找到功能X最早的包版本

所以我坐在这里想知道为什么我找不到我正在寻找的功能,事实证明它在我安装的软件包版本中不存在.

那么我如何让Hackage告诉我该功能的添加版本是什么?

(特别是,我可以在我的Cabal描述中指定正确的包边界.)

haskell cabal hackage

13
推荐指数
1
解决办法
76
查看次数

使用测试创建完整的Haskell堆栈

我是Haskell的新手,我正在尝试构建一个受测试的程序.我决定使用HUnit和Cabal.

从我所看到的一个结构良好的项目看起来如下:

src/
  AppName/
  Appname.hs
testsuite/
  tests/
    AppName/
  TestRunner.hs
AppName.cabal
Setup.hs
Run Code Online (Sandbox Code Playgroud)

对我来说神秘的部分是TestRunner.hs和AppName.cabal.

在testuite/tests目录和子目录下运行所有​​测试的testrunner会是什么样子?它如何与Cabal集成?

另外,如何将hackage依赖项放在AppName.cabal中并从命令行构建它们?

我很难找到一个完整的示例,从头开始构建一个带有测试和依赖项的应用程序.

谢谢

haskell cabal hackage test-runner hunit

12
推荐指数
1
解决办法
2910
查看次数

Haskell:关于hackage Control.Applicative文章中应用函子法的描述中的缺陷?:它说Applicative确定了Functor

我想我在hackage文章中Control.Applicative发现了一个缺陷.作为应用仿函数法的描述,它说:

class Functor f => Applicative f where
Run Code Online (Sandbox Code Playgroud)

带有应用程序的仿函数,提供嵌入纯表达式(pure)和序列计算的操作,并组合它们的结果(<*>).

最小完整定义必须包括满足以下法则的这些函数的实现:

身分

pure id <*> v = v
Run Code Online (Sandbox Code Playgroud)

组成

pure (.) <*> u <*> v <*> w = u <*> (v <*> w)
Run Code Online (Sandbox Code Playgroud)

同态

pure f <*> pure x = pure (f x)
Run Code Online (Sandbox Code Playgroud)

互换

u <*> pure y = pure ($ y) <*> u
Run Code Online (Sandbox Code Playgroud)

(请注意,这并未说明有关fmap的任何内容)并且它声明这些法律确定了Functor实例:

作为这些法律的结果,Functorf 的实例将满足

fmap f x = pure f <*> x
Run Code Online (Sandbox Code Playgroud)

我一开始以为这显然是错的.也就是说,我猜测必须存在t满足以下两个条件的类型构造函数:

  1. t是一个 …

haskell functor hackage applicative

11
推荐指数
1
解决办法
361
查看次数

是否存在有用的Haskell HashMap/HashTable/Dictionary库?

我正在寻找一个无monad,常量访问查询O(1)关联数组.

考虑假设类型:

data HT k v = ???
Run Code Online (Sandbox Code Playgroud)

我想构建一次不可变结构:

fromList :: Foldable t, Hashable k => t (k,v) -> HT k v
Run Code Online (Sandbox Code Playgroud)

我希望随后以恒定时间访问重复查询::

lookup :: Hashable k => HT k v -> k -> Maybe v
Run Code Online (Sandbox Code Playgroud)

似乎有两个候选图书馆不足:

unordered-containers

unordered-containers包含类型的严格和惰性变体HashMap.两者HashMap都有函数记录的O(log n)查询lookup.此查询访问时间似乎是由于HashMap类型的构造,其具有允许O(log n) insert功能的内部树结构.对于许多用例而言,可理解的设计权衡,但由于我不需要可变,HashMap这种权衡妨碍了我的用例.

hashtables

hashtables包含一个HashTable类型类和三个具有不同表构造策略的实例类型.这个库的类型类定义了一个常量时间O(1) lookup函数定义,但它永远嵌入在STmonad中.没有办法"冻结"有状态HashTable实现lookup,并且没有嵌入有状态monad 的函数.当整个计算以状态monad包装时,库的类型类接口设计得很好,但这种设计不适合我的用例.


是否存在一些定义类型和函数的其他库,它们可以构造一个不可嵌入的常量访问查询O(1)关联数组,该数组未嵌入有状态monad中?

是否存在某种方法来包装或修改这些现有的基于散列的库,以生成不嵌入有状态monad …

haskell hashtable hashmap asymptotic-complexity hackage

11
推荐指数
2
解决办法
1527
查看次数

将模块上传到HackageDB时,此警告消息的含义是什么?

当我将模块上传到Hackage时,我收到以下错误消息:

"暴露的模块使用未分配的顶级名称"

我将模块声明为.cabal文件中的公开模块.还有什么我应该做的吗?

haskell hackage

10
推荐指数
1
解决办法
517
查看次数

神秘的cabal-install问题

干净安装"Haskell平台".(OS X Snow-Leopard&Platform 2010.1.0.1),这样做会导致简单的序列导致非常奇怪的cabal install行为:

$ cabal install time

$ cabal install random

$ ghc-pkg list random
/Library/Frameworks/GHC.framework/Versions/612/usr/lib/ghc-6.12.1/package.conf.d
   random-1.0.0.2
/Users/yairc/.ghc/i386-darwin-6.12.1/package.conf.d
   random-1.0.0.2
Run Code Online (Sandbox Code Playgroud)

random-1.0.0.2在我的系统中安装了两次.现在每次都要cabal install random重新安装random-1.0.0.2.

看起来random取决于time,并且cabal想要在有新版本time可用之后重新安装它?而且由于两个random-1.0.0.2阴谋混淆并总是认为它不是最新的,因为它正在看第一个?

ghc-pkg check 发现没有错误.

haskell cabal hackage cabal-install

9
推荐指数
2
解决办法
2430
查看次数

触发Hackage包的文档更新

我有两个版本在他们的一些依赖项之前意外上传:

从那时起,他们的依赖关系早已得到满足,但是直到今天还没有生成他们的文档.

如何触发Hackage对这些版本的重新评估?上传新版本是解决这种愚蠢问题的唯一方法吗?

我在"维护者的角落"里找不到任何相关内容.

haskell hackage

8
推荐指数
1
解决办法
168
查看次数