如何安装system.random.也许是堆栈版本8中的cabal问题

dom*_*ath 2 haskell cabal haskell-stack

我正在使用堆栈ghci版本8在Ubuntu 16.04上工作.我想在Haskell中导入System.Random,但似乎我遇到麻烦,可能涉及Cabal.我在这个网站上看到了类似的帖子,但他们通常说这是因为版本较旧,但我使用的是版本8.

我收到错误:

Failed to load interface for ‘System.Random’
Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)

这告诉我我有System.Random的问题.在网上看,我发现我需要先安装Cabal.

当我输入

Cabal --version
Run Code Online (Sandbox Code Playgroud)

我明白了

cabal-install version 1.22.6.0
using version 1.22.5.0 of the Cabal library 
Run Code Online (Sandbox Code Playgroud)

这告诉我,我已经拥有它.所以当我尝试更新时

sudo apt-get install cabal-install cabal update
Run Code Online (Sandbox Code Playgroud)

我明白了

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package cabal
E: Unable to locate package update
Run Code Online (Sandbox Code Playgroud)

这很奇怪.如果我忽略它并尝试随机安装随机

cabal install random
Run Code Online (Sandbox Code Playgroud)

我明白了

Resolving dependencies...
All the requested packages are already installed:
random-1.1
Use --reinstall if you want to reinstall anyway.
Run Code Online (Sandbox Code Playgroud)

所以我似乎也有随机的cabal包.但我无法加载程序

import System.Random
Run Code Online (Sandbox Code Playgroud)

命令.

编辑:似乎我有堆栈ghci版本8.0.1和ghci版本7.10.3.System.random加载ghci但不加载堆栈ghci.

当我尝试在堆栈中加载文件时,我也得到以下内容.进入

stack ghci R.hs
Run Code Online (Sandbox Code Playgroud)

我明白了

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
Run Code Online (Sandbox Code Playgroud)

这是否意味着我的堆栈安装有问题?

wiz*_*zup 6

如果你想使用stack,并假设你有工作stack,你不必通过安装任何东西apt-get.

首先,更新你的 stack

stack update
Run Code Online (Sandbox Code Playgroud)

确保您的软件包具有正确的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
Run Code Online (Sandbox Code Playgroud)

stack在项目目录(stack.yaml存在)中使用,您不需要手动安装包; stack如果需要的话,会为你安装stack build.但你必须编辑<project.cabal>

build-depends:       base >= 4.7 && < 5
                     , random
Run Code Online (Sandbox Code Playgroud)