有人应该认为这是常见问题解答,但我还没有找到这个简单问题的答案:
我的GHC安装中有哪个版本的某个软件包?
我试图学习Haskell,为了做到这一点,我正在通过Real World Haskell。我现在已经达到chapter 11,其中包括其他主题,介绍了QuickCheck。
不幸的是,自2009年该书出版以来,QuickCheck已发生变化,似乎已经进行了各种修改。每当我寻找一种新的做事方式时,作为书中说明的替代方案,新的方式有时也无法发挥作用。也许是新的方式'在2012年被描述,但随后QuickCheck在当时和现在之间再次发生了变化。
最终,我必须弄清楚如何从文档或源代码中使用QuickCheck,但是知道我应该调查哪个版本会非常有帮助。
我还没有达到我对Cabal等方面的了解,所以我的问题是基于纯粹的无知。希望有一个简单的答案。
我在Windows上使用GHC,显然,QuickCheck已经捆绑到我的安装中。我已经有了QuickCheck,但我不知道哪个版本。
答案 0 :(得分: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
已经安装了#34;版本&#34;:
$ cabal info QuickCheck | grep "Versions installed"
Versions installed: 2.8.1
在Windows上,您可以使用findstr:
$ cabal info QuickCheck | findstr /C:"Versions installed"
Versions installed: 2.8.1
备注:如果您没有安装<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
但是,请注意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)
在这种情况下,您需要使用ghc-pkg -f .\.cabal-sandbox\<platform>-packages.conf.d
或cabal 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
但是,由于您已经在使用cabal
,因此您只需使用cabal info
。
答案 1 :(得分:1)
使用堆栈:
stack exec -- ghc-pkg list
示例:
% stack exec -- ghc-pkg list | grep aeson
aeson-0.11.3.0
aeson-pretty-0.8.8