Как установить system.random. Возможно, проблема с кабалом в версии 8 стека

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

Я получаю сообщение об ошибке:

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

что говорит мне, что у меня проблемы с System.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

команда.

РЕДАКТИРОВАТЬ: Кажется, у меня есть стек ghci версии 8.0.1 и ghci версии 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

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


person domoremath    schedule 13.02.2017    source источник


Ответы (1)


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

Сначала обновите свой stack

stack update

Убедитесь, что у вас правильный resolver номер версии для ваших пакетов.

  • Если вы хотите использовать стек глобально, то есть 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
person wizzup    schedule 14.02.2017