2017-02-13 3 views
1

Я работаю над Ubuntu 16.04 с пакетом ghci версии 8. Я хочу импортировать System.Random в Haskell, но, похоже, у меня проблемы с Cabal. Я видел подобные сообщения на этом сайте, но они, как правило, говорят, что это из-за старой версии, но я использую версию 8.Как установить system.random. Может быть, проблема с кабкой в ​​версии 8 из стека

я получаю ошибку:

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

, который говорит мне, что у меня есть проблемы с системой .random. Посмотрев онлайн, я обнаружил, что мне нужно сначала установить Cabal.

Когда я типа

Cabal --version 

Я получаю

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

, который говорит мне, что я уже есть. Поэтому, когда я пытаюсь обновить с

sudo apt-get install cabal-install cabal update 

я

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

который является фантастическим. Если я игнорирую его и попытаться установить случайный или иначе через

cabal install random 

Я получаю

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

Так что, кажется, у меня есть случайный пакет заговорщиков. Но я не могу загрузить программу с помощью

import System.Random 

команда.

EDIT: Кажется, у меня есть стек ghci версии 8.0.1 и ghci version 7.10.3. System.random загружает в ghci, но не стек ghci.

Я также получаю следующее, когда пытаюсь загрузить файл в стек. Ввод

stack ghci R.hs 

я

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 

Означает ли это, что-то не так с моей установки стека?

+0

'Sudo APT-получить установку Кабал установить Кабалы update' упущение это не странно. Команда - 'cabal update'; он не имеет ничего общего с apt-get. – Ryan

+0

@ Ryan, я просто попробовал «обновление cabal && cabal install cabal-install», и он все еще не работал. – domoremath

+0

https://docs.haskellstack.org/en/stable/GUIDE/#adding-dependencies. 'stack install' тоже может работать. – Ryan

ответ

3

Если вы хотите использовать stack и предположим, что у вас есть рабочий stack, вам не нужно ничего устанавливать через apt-get.

Во-первых, обновить stack

stack update 

Убедитесь, что вы имея право resolverversion number для ваших пакетов

  • Если вы хотите использовать стек в глобальном масштабе, то есть., stack ghci <source.hs>. Проверьте ~/.stack/global-project/stack.yaml.
  • Если вы управляете своим проектом, используя stack, т. Е. stack new <project>, stack build. Проверить принадлежность проекта stack.yaml

Чтобы использовать stack глобально (в любом месте)

  • установить наугад stack install random
  • с использованием GHCI по stack ghci и :load <source.hs>
  • источник компиляции stack ghc <source.hs>
  • запустить программу по stack exec <executable_name>

Вы можете заставить стек использовать специальный резольвер, используя --resolver=.

Пример: используя последние LTS

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

Чтобы использовать stack в директории проекта (stack.yaml существует), вам не нужно устанавливать пакет вручную; stack установит его для вас, если необходимо, когда stack build. Но вы должны редактировать <project.cabal>

build-depends:  base >= 4.7 && < 5 
        , random 
Смежные вопросы