在 newsynth 中使用 RandomGen
Using RandomGen in newsynth
我是 Haskell 的新手,我正在尝试编写一些代码并 运行 时间紧迫,这就是为什么我要做的事情比绝对基础。我正在使用包 newsynth 并想使用函数 root_of_negative_one
(documentation, source)。在 GHCi 中,我 运行 以下命令:
Prelude> import Quantum.Synthesis.Diophantine
Prelude Quantum.Synthesis.Diophantine> :set -package random
Prelude Quantum.Synthesis.Diophantine> import System.Random
Prelude Quantum.Synthesis.Diophantine System.Random> let g = getStdGen
Prelude Quantum.Synthesis.Diophantine System.Random> let x = root_of_negative_one g 5
尝试求 -1 的平方根 mod 5. GHCi returns:
<interactive>:7:9: error:
• No instance for (RandomGen (IO StdGen))
arising from a use of ‘root_of_negative_one’
• In the expression: root_of_negative_one g 5
In an equation for ‘x’: x = root_of_negative_one g 5
我知道 root_of_negative_one
需要一个 RandomGen 类型的输入,但我似乎对 RandomGen 文档的理解还不够好,无法执行此操作。任何帮助表示赞赏。谢谢!
root_of_negative_one
需要一个 StdGen
,但 getStdGen
是一个 IO StdGen
。你需要做 g <- getStdGen
而不是 let g = getStdGen
.
我是 Haskell 的新手,我正在尝试编写一些代码并 运行 时间紧迫,这就是为什么我要做的事情比绝对基础。我正在使用包 newsynth 并想使用函数 root_of_negative_one
(documentation, source)。在 GHCi 中,我 运行 以下命令:
Prelude> import Quantum.Synthesis.Diophantine
Prelude Quantum.Synthesis.Diophantine> :set -package random
Prelude Quantum.Synthesis.Diophantine> import System.Random
Prelude Quantum.Synthesis.Diophantine System.Random> let g = getStdGen
Prelude Quantum.Synthesis.Diophantine System.Random> let x = root_of_negative_one g 5
尝试求 -1 的平方根 mod 5. GHCi returns:
<interactive>:7:9: error:
• No instance for (RandomGen (IO StdGen))
arising from a use of ‘root_of_negative_one’
• In the expression: root_of_negative_one g 5
In an equation for ‘x’: x = root_of_negative_one g 5
我知道 root_of_negative_one
需要一个 RandomGen 类型的输入,但我似乎对 RandomGen 文档的理解还不够好,无法执行此操作。任何帮助表示赞赏。谢谢!
root_of_negative_one
需要一个 StdGen
,但 getStdGen
是一个 IO StdGen
。你需要做 g <- getStdGen
而不是 let g = getStdGen
.