在关于 monads的教程中,在A more complex side effect: Random Numbers一节中,作者提供了 random 函数的签名,如下所示:
random :: StdGen -> (a,StdGen)
但接着说:
因此,一个概念上是随机函数的函数
a → b
可以写成一个函数
a -> StdGen -> (b,StdGen)
,其中StdGen
是种子的类型。
签名开头的多余a
部分来自哪里?为什么那种类型StdGen -> (a, StdGen)
不像以前那么简单???
谢谢