首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向GHCi隐藏随机版本

向GHCi隐藏随机版本
EN

Stack Overflow用户
提问于 2020-10-14 22:04:58
回答 2查看 258关注 0票数 3

我正在使用newsynth包,并且遇到了一个bug,我开始怀疑这与夏天的random-1.2.0更新有关(newsynth上一次更新是在2019年末,random-1.2.0是在6月份发布的。)从那时起,我就开始运行cabal update,这就是为什么两者都被安装的原因。)下面是我在GHCi中运行的代码:

代码语言:javascript
复制
 λ> import System.Random
 λ> import Quantum.Synthesis.Ring
 λ> import Quantum.Synthesis.Diophantine
 λ> g <- getStdGen
 λ> diophantine g (RootTwo 5 0)

<interactive>:5:1: error:
    • No instance for (random-1.1:System.Random.RandomGen StdGen)
        arising from a use of ‘diophantine’
      There are instances for similar types:
        instance random-1.1:System.Random.RandomGen
                   random-1.1:System.Random.StdGen
          -- Defined in ‘random-1.1:System.Random’
    • In the expression: diophantine g (RootTwo 5 0)
      In an equation for ‘it’: it = diophantine g (RootTwo 5 0)

正如在另一篇SO文章中向我建议的那样,我试图向GHCi隐藏另一份GHCi副本。我跑了

代码语言:javascript
复制
$ ghc-pkg --global --package-db ~/.cabal/store/ghc-8.8.3/package.db list random
~/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d
    (no packages)
~/.cabal/store/ghc-8.8.3/package.db
    random-1.1
    random-1.2.0

所以我试了一下$ ghc-pkg --global --package-db ~/.cabal/store/ghc-8.8.3/package.db hide random-1.2.0。然而,当错误持续存在时,我也尝试了$ ghc-pkg --global --package-db ~/.cabal/store/ghc-8.8.3/package.db hide random-1.1 (只是为了确保hide做了我认为它会做的事情),但是莫名其妙地发现,在GHCi中(即使在重新启动终端之后),尽管隐藏了所有已知的random实例,我还是能够运行λ> import System.Random。我是不是把包裹藏错了?

提前谢谢你。

(前几天我问了一个有点相关的问题,但由于我认为这个问题有点不同,所以我认为这是有道理的。如果不是这样,我可以更新另一篇文章。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-14 23:42:56

当您想要管理包时,请使用阴谋或堆栈。但首先,重置为清洁状态:

代码语言:javascript
复制
rm -rf ~/.ghc ~/.cabal
cabal update
cabal v2-repl -b newsynth

这将使您使用所需的包进入GHCi会话。

票数 2
EN

Stack Overflow用户

发布于 2020-10-15 08:08:12

您想直接在ghci中工作,而不需要通过cabal replstack ghci,一种方法是使用阴谋-安装在文件夹中创建本地GHC封装环境

代码语言:javascript
复制
cabal install --lib --constraint="random == 1.1" --package-env .  random

除了“随机”本身之外,您还需要显式地列出希望在环境中出现的其他包。同样,您可以添加多个--constraint参数。

这将在文件夹中创建一个名为".ghc.environment.xxx“的文件,该文件应该通过独立的ghci或ghc调用来获取。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64362142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档