2017-02-13 4 views
1

Je travaille sur Ubuntu 16.04 avec stack ghci version 8. Je veux importer System.Random dans Haskell mais il semble que j'ai des problèmes qui peuvent impliquer Cabal. J'ai vu des postes similaires sur ce site, mais ils disent souvent qu'il est à cause d'une ancienne version, mais je suis en utilisant la version 8.Comment installer system.random. Peut-être problème de cabale dans la version 8 de la pile

Je reçois l'erreur:

Failed to load interface for ‘System.Random’ 
Use -v to see a list of the files searched for. 

qui me dit que j'ai des problèmes avec le système .Au hasard. En regardant en ligne, j'ai trouvé que je dois d'abord installer Cabal.

Lorsque je tape

Cabal --version 

Je reçois

cabal-install version 1.22.6.0 
using version 1.22.5.0 of the Cabal library 

qui me dit que je l'ai déjà. Donc, lorsque je tente de mettre à jour avec

sudo apt-get install cabal-install cabal update 

Je reçois

Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
E: Unable to locate package cabal 
E: Unable to locate package update 

ce qui est bizarre. Si je l'ignore et essaie d'installer au hasard à travers toute façon

cabal install random 

Je reçois

Resolving dependencies... 
All the requested packages are already installed: 
random-1.1 
Use --reinstall if you want to reinstall anyway. 

Il semble que j'ai aussi le paquet aléatoire de cabale. Mais je ne peux pas charger un programme avec la commande

import System.Random 

.

EDIT: Il semble que j'ai la version ghci de la pile 8.0.1 et la version 7.10.3 de ghci. Le System.random se charge dans ghci mais pas dans la pile ghci.

Je reçois également ce qui suit lorsque j'essaie de charger un fichier dans une pile. Saisie

stack ghci R.hs 

Je reçois

Warning: Couldn't find a component for file target /home/aa/workspace/share/haskell/chenw/hw4/R.hs. Attempting to load anyway. 
Configuring GHCi with the following packages: 
GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help 
Loaded GHCi configuration from /home/aa/.ghc/ghci.conf 
Loaded GHCi configuration from /tmp/ghci19674/ghci-script 

Est-ce que cela signifie qu'il ya quelque chose de mal avec mon installation de la pile?

+0

'sudo apt-get install cabale installer à défaut cabale update' est pas bizarre. La commande est 'cabal update'; cela n'a rien à voir avec apt-get. – Ryan

+0

@Ryan, je viens d'essayer "cabal update && cabal install cabal-install" et il n'a toujours pas fonctionné. – domoremath

+0

https://docs.haskellstack.org/fr/stable/GUIDE/#adding-dependencies. 'stack install' pourrait aussi fonctionner. – Ryan

Répondre

3

Si vous voulez utiliser stack, et supposer que vous avez un fonctionnement stack, vous n'avez rien à installer via apt-get.

Tout d'abord, mettez à jour votre stack

stack update 

Assurez-vous d'avoir le droit resolverversion number pour vos paquets

  • Si vous souhaitez utiliser la pile au niveau mondial, i.e.., stack ghci <source.hs>. Vérifiez ~/.stack/global-project/stack.yaml.
  • Si vous gérez votre projet à l'aide de stack, par exemple. stack new <project>, stack build. stack.yaml de vérification projet

Pour utiliser stack globalement (partout)

  • installer au hasard par stack install random
  • utilisant GHCi par stack ghci et :load <source.hs>
  • source de compilation par stack ghc <source.hs>
  • exécuter votre programme par stack exec <executable_name>

Vous pouvez forcer la pile à utiliser un résolveur spécifique en utilisant --resolver=.

Exemple: en utilisant les dernières LTS

$ stack --resolver=lts setup 
$ stack --resolver=lts install random 
$ stack --resolver=lts ghci 

Pour utiliser stack dans un répertoire de projet (stack.yaml existe), vous n'avez pas besoin d'installer manuellement l'emballage; stack va l'installer pour vous, si nécessaire, lorsque stack build. Mais vous devez modifier <project.cabal>

build-depends:  base >= 4.7 && < 5 
        , random