我有哪个套餐版本?

Mar*_*ann 8 haskell ghc quickcheck

人们应该认为这是一个FAQ,但我无法找到这个简单问题的答案:

我的GHC安装中有哪个版本的某个软件包?

背景

我正在努力学习Haskell,为了做到这一点,我正在通过Real World Haskell.我现在已经达到了第11章,其中包括其他主题,介绍了QuickCheck.

遗憾的是,自2009年该书出版以来,QuickCheck已发生变化,似乎已经进行了各种修改.每当我寻找新的做事方式时,作为书中说明的替代方案,新的方式有时也无效.也许2012年描述了"新方式",但随后QuickCheck在当时和现在之间再次发生了变化.

最后,我将不得不弄清楚如何从文档或源代码中使用QuickCheck,但知道我应该调查哪个版本会非常有帮助.

我还没有达到我了解Cabal等的地步,所以我的问题是基于纯粹的无知.希望有一个简单的答案.

我在Windows上使用GHC,显然,QuickCheck已经捆绑到我的安装中.我已经有了QuickCheck,但我不知道哪个版本.

Zet*_*eta 6

运用 cabal info

您可以使用cabal info <packagename>获取有关包的信息,包括当前安装的版本:

$ cabal info QuickCheck
* QuickCheck       (library)
    Synopsis:      Automatic testing of Haskell programs
    Versions available: 1.1.0.0, 1.2.0.0, 1.2.0.1, 2.6, 2.7.4, 2.7.5, 2.7.6,
                        2.8, 2.8.1 (and 24 others)
    Versions installed: 2.8.1
    Homepage:      https://github.com/nick8325/quickcheck
    Bug reports:   mailto:quickcheck@projects.haskell.org
    Description:   QuickCheck is a library for random testing of program
                   properties.

                   The programmer provides a specification of the program, in
                   the form of properties which functions should satisfy, and
                   ...

所以你要做的就是grep"安装的版本":

$ cabal info QuickCheck | grep "Versions installed"
Versions installed: 2.8.1
Run Code Online (Sandbox Code Playgroud)

在Windows上,您可以使用findstr:

$ cabal info QuickCheck | findstr /C:"Versions installed"
Versions installed: 2.8.1
Run Code Online (Sandbox Code Playgroud)

备注:如果您尚未<packagename>安装但仍想了解有关它的一些信息,则可能需要cabal update先安装.

运用 ghc-pkg

如果您尚未cabal安装,您仍然可以使用GHC的包管理器ghc-pkg:

$ ghc-pkg list QuickCheck
C:\Program Files\MinGHC-7.8.4\ghc-7.8.4\lib\package.conf.d:
    QuickCheck-2.8.1
Run Code Online (Sandbox Code Playgroud)

但请注意,ghc-pkg不承认cabal沙箱:

$ cabal sandbox init
$ cabal install QuickCheck
$ ghc-pkg list QuickCheck
C:\Program Files\MinGHC-7.8.4\ghc-7.8.4\lib\package.conf.d:
    (no packages)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您需要使用ghc-pkg -f .\.cabal-sandbox\<platform>-packages.conf.dcabal exec:

$ ghc-pkg -f .\.cabal-sandbox\x86_64-windows-ghc-7.8.4-packages.conf.d list QuickCheck 
.\.cabal-sandbox\x86_64-windows-ghc-7.8.4-packages.conf.d:
    QuickCheck-2.8.1

$ cabal exec -- ghc-pkg list QuickCheck 
.\.cabal-sandbox\x86_64-windows-ghc-7.8.4-packages.conf.d:
    QuickCheck-2.8.1
Run Code Online (Sandbox Code Playgroud)

但是,由于您已经在使用cabal,因此您可以简单地使用cabal info.

  • 或者,如果你不想通过`cabal`(并使用`ghc`),你可以``ghc-pkg list QuickCheck`,默认情况下只会显示已安装软件包的版本号. (2认同)

Jan*_*sen 5

使用堆栈:

stack exec -- ghc-pkg list
Run Code Online (Sandbox Code Playgroud)

例子:

% stack exec -- ghc-pkg list | grep aeson
aeson-0.11.3.0
aeson-pretty-0.8.8
Run Code Online (Sandbox Code Playgroud)

  • 这些天,我通常使用[`stack ls dependency`](/sf/answers/2826322761/)。 (3认同)