我正在使用堆栈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 回答
如果你想使用
stack
,并假设你有一个工作stack
,你不必通过apt-get
安装任何东西 .首先,更新你的
stack
确保您的包装正确
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
(stack.yaml
存在),您不需要手动安装包;stack
将在stack build
时根据需要为您安装 . 但你必须编辑<project.cabal>