我正在使用newsynth包,并且遇到了一个bug,我开始怀疑这与夏天的random-1.2.0更新有关(newsynth上一次更新是在2019年末,random-1.2.0是在6月份发布的。)从那时起,我就开始运行cabal update,这就是为什么两者都被安装的原因。)下面是我在GHCi中运行的代码:
λ> 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副本。我跑了
$ 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。我是不是把包裹藏错了?
提前谢谢你。
(前几天我问了一个有点相关的问题,但由于我认为这个问题有点不同,所以我认为这是有道理的。如果不是这样,我可以更新另一篇文章。)
发布于 2020-10-14 23:42:56
当您想要管理包时,请使用阴谋或堆栈。但首先,重置为清洁状态:
rm -rf ~/.ghc ~/.cabal
cabal update
cabal v2-repl -b newsynth这将使您使用所需的包进入GHCi会话。
发布于 2020-10-15 08:08:12
https://stackoverflow.com/questions/64362142
复制相似问题