Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“我怎么能?”;商店「;Haskell中PRNG的最后一个结果是什么?_Haskell_Random_Mutable - Fatal编程技术网

“我怎么能?”;商店「;Haskell中PRNG的最后一个结果是什么?

“我怎么能?”;商店「;Haskell中PRNG的最后一个结果是什么?,haskell,random,mutable,Haskell,Random,Mutable,对于赋值,我必须用Haskell编写一个伪随机数生成器。我不确定在Haskell中如何“记住”函数返回的最后一个值,因为伪随机数生成器的定义要求这样做(序列中的下一个数字基于返回的最后一个数字) 在命令式语言中,我可以保留一个全局变量或其他内容: int last_rand; int myRandom() { last_rand = (some operation on last_rand); return last_rand; } 但在Haskell中,或者至少从我对Hask

对于赋值,我必须用Haskell编写一个伪随机数生成器。我不确定在Haskell中如何“记住”函数返回的最后一个值,因为伪随机数生成器的定义要求这样做(序列中的下一个数字基于返回的最后一个数字)

在命令式语言中,我可以保留一个全局变量或其他内容:

int last_rand;

int myRandom()
{
   last_rand =  (some operation on last_rand);
   return last_rand;
}

但在Haskell中,或者至少从我对Haskell的了解来看,无法存储和更新函数返回值的可变记录。。。我怎样才能做到这一点呢?

我想推荐你们阅读这本书的(查找有品位的阶段性计算部分)

在那里你可以找到你的作业的解决方案(或解决方案的关键)


另外,我提供了这本书的链接,因为复制粘贴它的内容毫无意义。直接链接:)

查看记录类型。此外,您可能还想了解的函数是如何工作的。为此您需要一个monad。为什么不直接将
last\u rand
显式传递到
myRandom
?您甚至不需要结果本身以外的状态,因此只需通过函数调用将其流式传输,并重用
last\u rand
进行递归调用即可。@EarlGray不幸的是,赋值规范禁止这样做。