小编Chr*_*s.Q的帖子

Haskell 中随机数生成器的函数声明

我刚开始使用“Learn You a Haskell for Great Good”这本书开始学习 Haskell,并阅读了第 9 章“输入和输出”。但是当我尝试一个例子时,我遇到了一些奇怪的问题,大致可以描述为三个步骤。

1)书中的示例代码是

finiteRandoms :: (RandomGen g, Random a, Num n) => n -> g -> ([a], g)  
finiteRandoms 0 gen = ([], gen)  
finiteRandoms n gen =   
    let (value, newGen) = random gen  
        (restOfList, finalGen) = finiteRandoms (n-1) newGen  
    in  (value:restOfList, finalGen)  
Run Code Online (Sandbox Code Playgroud)

但这无法编译。错误信息是

/Users/learn_haskell/randomness.hs:12:15:
    Could not deduce (Eq n) arising from the literal `0'
    from the context (RandomGen g, Random a, Num n)
      bound by the type signature for
                 finiteRandoms …
Run Code Online (Sandbox Code Playgroud)

random haskell

3
推荐指数
1
解决办法
577
查看次数

标签 统计

haskell ×1

random ×1