Какая у меня версия пакета?

Можно подумать, что это FAQ, но я не смог найти ответ на этот простой вопрос:

Какая версия определенного пакета есть в моей установке GHC?

Задний план

Я пытаюсь изучить Haskell, и для этого я изучаю Real World Haskell. Я добрался до главы 11, в которой, помимо прочего, рассказывается о QuickCheck.

К сожалению, QuickCheck изменился с момента публикации книги в 2009 году, и, похоже, он претерпел различные изменения. Всякий раз, когда я ищу новый способ ведения дел в качестве альтернативы инструкциям в книге, новые способы иногда тоже не работают. Возможно, «новый способ» был описан в 2012 году, но затем QuickCheck снова изменился между тем и сейчас.

В конечном счете, мне придется выяснить, как использовать QuickCheck либо из документации, либо из исходного кода, но было бы чрезвычайно полезно знать, какую версию мне следует исследовать.

Я еще не дошел до того, что узнал о Кабале и тому подобном, поэтому мой вопрос основан на полнейшем невежестве. Надеюсь, есть простой ответ.

Я использую GHC в Windows, и, по-видимому, QuickCheck уже встроен в мою установку. У меня уже есть QuickCheck, но я не знаю, какая версия.


person Mark Seemann    schedule 25.11.2015    source источник
comment
Это может помочь: stackoverflow.com/questions/2892586/   -  person shree.pat18    schedule 25.11.2015
comment
*вздох*, еще один для списка.   -  person Zeta    schedule 25.11.2015
comment
@shree.pat18 shree.pat18 Это не кажется полезным для уже установленной библиотеки (и которая, как и большинство библиотек, не предоставляет свой Paths_* модуль).   -  person Daniel Wagner    schedule 25.11.2015


Ответы (2)


Использование 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:[email protected]
    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

В 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 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.

person Zeta    schedule 25.11.2015
comment
Или, если вы не хотите проходить cabal (и используете ghc), вы можете ghc-pkg list QuickCheck, что по умолчанию просто покажет номера версий для установленных пакетов. - person Daniel Wagner; 25.11.2015

Использование стека:

stack exec -- ghc-pkg list

Пример:

% stack exec -- ghc-pkg list | grep aeson
aeson-0.11.3.0
aeson-pretty-0.8.8
person Janus Troelsen    schedule 27.07.2021
comment
Сейчас я обычно использую stack ls dependencies. - person Mark Seemann; 27.07.2021