实例化某些对象(Haskell)

实例化某些对象(Haskell),haskell,Haskell,我正在处理这个包,特别想使用这个方法,我的问题是如何实例化运行它所需的对象。我对类型RandomGen=>g->Double->SymReal->Int->U2 DOmega感到困惑,因为上的示例似乎只需要一个实数(例如pi/128)作为输入。事实上,当我导入所有必要的包并尝试 λ> g <- getStdGen λ> gridsynth g pi/128 (Const 33) 25 λ>g gridsynth g pi/128(常数33)25 我得到了一个简单的矩阵p

我正在处理这个包,特别想使用这个方法,我的问题是如何实例化运行它所需的对象。我对类型
RandomGen=>g->Double->SymReal->Int->U2 DOmega
感到困惑,因为上的示例似乎只需要一个实数(例如
pi/128
)作为输入。事实上,当我导入所有必要的包并尝试

 λ> g <- getStdGen
 λ> gridsynth g pi/128 (Const 33) 25
λ>g gridsynth g pi/128(常数33)25

我得到了一个简单的矩阵<选择code>pi/128是因为它是样本值,选择
Const 33
是因为我希望ε大约为10^10≈ 选择了2^33和
25
,因为文档表明了这一点,但无论输入如何,输出仍然微不足道。非常感谢您提供的任何帮助,以澄清这一点。

我不确定,但您似乎在某种程度上依赖于两个不同的不兼容版本的
random
软件包。此错误表示,版本1.1中的
RandomGen
typeclass对于另一个版本中的
StdGen
类型没有实例,您使用的是
import System.Random
。你是怎么运作的?您可能应该使用Stack或Cabal项目为您获取和构建正确的包。我目前正在尝试使用GHCi命令行获取包的挂起部分。我的较长文件(不是特别长)我只是通过GHCi以.hs文件的形式运行(不使用Stack或Cabal,我安装了Cabal,但除了获取新软件包,不知道如何使用它,例如
Cabal安装…
)。了解my.ghci文件中的内容是否有用?我有
:set-package random
。这会引起问题吗?我不知道还有什么方法可以让两个不同的
random
运行…您可以使用
ghc pkg
查看和修改为给定包名选择的包版本,并查看依赖关系树信息。我建议使用
ghc pkg descripe newsynth
找出它所依赖的
random
的哪个版本,然后
ghc pkg list random
查看哪个版本是公开的(普通字体是公开的,彩色字体是隐藏的)。如果它们不匹配,可以使用
ghc-pkg-hide
ghc-pkg-expose
来修复,然后重试。(不要将此作为答案,因为它没有解决您问题的其他部分。)@DanielWagner感谢您的建议。我应该能够在任何地方运行这些命令吗
ghc pkg descripe newsynth
返回
ghc pkg:找不到包newsynth
,并且
ghc pkg list random
返回
~/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d(无包)
。(然后我导航到
~/.ghcup/ghc
,只找到了一个版本的ghc,所以似乎没有多个安装)。那个信息让我有点困惑。如何启动ghci?