0

モナドに関するチュートリアルのセクションA more complex side effect: Random Numbersで、著者はランダム関数の署名を次のように提供しています。

random :: StdGen -> (a,StdGen)

しかし、続けて次のように言います。

したがって、概念的にランダム化された関数である関数は、シードの型でa → bある関数として記述できます。
a -> StdGen -> (b,StdGen)
StdGen

a署名の最初の余分な部分はどこから来たのですか? なぜそのタイプはStdGen -> (a, StdGen)以前のように単純ではないのですか???

ありがとう

4

2 に答える 2

3

aが引数でa -> bあり、ランダムbがであることを意味すると思いStdGen -> (b, StdGen)ます。StdGen -> (a, StdGen)ランダムを与えるだけですa

于 2012-07-26T17:01:30.633 に答える
0

これらは彼が説明している2つの異なる機能であるため、同じではありません。:)

最初のものは を取り、StdGenその乱数発生器の結果を新しい状態とともに返します。

a彼は次に、「ランダムに を ( に)変異させる関数があれば、b...」と言い、次に 2 番目の署名を返します。

于 2012-07-31T16:44:52.263 に答える