すべての可能なもののリストがあるとしましょう
all3PStrategies :: [Strategy3P]
all3PStrategies = [strategyA, strategyB, strategyC, strategyD] //could be longer, maybe even infinite, but this is good enough for demonstrating
これで、整数N
と 2 つの戦略を取り、最初の戦略をN
時間に使用し、次に 2 番目の戦略をN
時間に使用して、必要なだけ繰り返し続ける別の関数ができました。
が 0の場合はどうなりますかN
。関数の目的に反するため、ランダムな戦略を返したいのですが、最終的には特定の戦略を適用する必要があります。
rotatingStrategy [] [] _ = chooseRandom all3PStrategies
rotatingStrategy strategy3P1 strategy3P2 N =
| … // other code for what really happens
だから私はリストからランダムな戦略を取得しようとしています. これでうまくいくと思います:
chooseRandom :: [a] -> RVar a
しかし、Haddock/doctest を使用してテストするにはどうすればよいでしょうか?
-- >>> chooseRandom all3PStrategies
-- // What goes here since I cant gurauntee what will be returned...?
ランダム関数は Haskell の関数型の考え方に反するものだと思いますが、私も間違っている可能性があります。命令型言語では、random 関数はさまざまなパラメーター (Java の Time など) を使用して乱数を決定します。