首页 文章

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

提问于
浏览
1

我正在使用堆栈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.

这告诉我我有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.

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

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

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

1 回答

  • 5

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

    首先,更新你的 stack

    stack update
    

    确保您的包装正确 resolver version 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
    

    要在项目目录中使用 stackstack.yaml 存在),您不需要手动安装包; stack 将在 stack build 时根据需要为您安装 . 但你必须编辑 <project.cabal>

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

相关问题