Как найти и использовать пакет QuickCheck, так как я забыл использовать --lib при установке cabal - PullRequest
1 голос
/ 17 июня 2020

Я хотел использовать пакет QuickCheck, поэтому я сделал cabal install QuickCheck, а затем получил

Warning: You asked to install executables, but there are no executables in
target: QuickCheck. Perhaps you want to use --lib to install libraries
instead.

Затем я узнал, что это правильный способ

cabal install --lib QuickCheck

I попытался найти, как заставить его работать после этого, но не смог найти точный способ. Я новичок, поэтому любая помощь будет приятной. Затем я попытался удалить пакет, чтобы я мог переустановить с помощью --lib, но это также вызывает проблемы. Я попытался удалить, используя следующее

cabal uninstall QuickCheck

Он дал это сообщение

cabal.exe: This version of 'cabal-install' does not support the 'uninstall'
operation. It will likely be implemented at some point in the future; in the
meantime you're advised to use either 'ghc-pkg unregister QuickCheck' or
'cabal sandbox hc-pkg -- unregister QuickCheck'.

Итак, я попробовал это

ghc-pkg unregister --force QuickCheck

Затем он говорит это

ghc-pkg: cannot find package QuickCheck

Любая помощь или комментарий приветствуются.

1 Ответ

1 голос
/ 17 июня 2020

Его не нужно удалять. Просто запустите

cabal install --lib QuickCheck

Он сообщит вам, что он уже обновлен, но он также (молча) пометит его как доступный за пределами сборок, управляемых Кабалом.

Демонстрация:

$ ghci
GHCi, version 8.8.3: https://www.haskell.org/ghc/  :? for help
Loaded package environment from /home/carl/.ghc/x86_64-linux-8.8.3/environments/default
Prelude> import Test.QuickCheck

<no location info>: error:
    Could not find module ‘Test.QuickCheck’
    It is not a module in the current program, or in any known package.
Prelude>
Leaving GHCi.

$ cabal install QuickCheck
Resolving dependencies...
Build profile: -w ghc-8.8.3 -O1
In order, the following will be built (use -v for more details):
 - splitmix-0.0.5 (lib) (requires download & build)
 - QuickCheck-2.14 (lib) (requires download & build)
Downloading  splitmix-0.0.5
Downloaded   splitmix-0.0.5
Downloading  QuickCheck-2.14
Starting     splitmix-0.0.5 (lib)
Downloaded   QuickCheck-2.14
Building     splitmix-0.0.5 (lib)
Installing   splitmix-0.0.5 (lib)
Completed    splitmix-0.0.5 (lib)
Starting     QuickCheck-2.14 (lib)
Building     QuickCheck-2.14 (lib)
Installing   QuickCheck-2.14 (lib)
Completed    QuickCheck-2.14 (lib)

$ ghci
GHCi, version 8.8.3: https://www.haskell.org/ghc/  :? for help
Loaded package environment from /home/carl/.ghc/x86_64-linux-8.8.3/environments/default
Prelude> import Test.QuickCheck

<no location info>: error:
    Could not load module ‘Test.QuickCheck’
    It is a member of the hidden package ‘QuickCheck-2.14’.
    You can run ‘:set -package QuickCheck’ to expose it.
    (Note: this unloads all the modules in the current scope.)
Prelude>
Leaving GHCi.

$ cabal install QuickCheck --lib
Resolving dependencies...
Up to date

carl@DESKTOP-35ES091:~/hask$ ghci
GHCi, version 8.8.3: https://www.haskell.org/ghc/  :? for help
Loaded package environment from /home/carl/.ghc/x86_64-linux-8.8.3/environments/default
Prelude> import Test.QuickCheck
Prelude Test.QuickCheck>

Я начал с неустановленной QuickCheck, поэтому ghci выдал ошибку It is not a module in the current program, or in any known package., когда я попытался импортировать Test.QuickCheck. После установки без опции --lib я получил ошибку It is a member of the hidden package ‘QuickCheck-2.14’. Когда я установил с опцией --lib, он сказал мне, что он уже обновлен, но после импорта Test.QuickCheck в ghci работал.

Да, ghc-pkg list все еще не показывает его. Кажется, эта команда немного устарела в отношении того, как работает cabal install --lib сейчас, и как gh c был обновлен, чтобы заставить его работать.

...