假设有一个所有可能事物的列表
all3PStrategies :: [Strategy3P]
all3PStrategies = [strategyA, strategyB, strategyC, strategyD] //could be longer, maybe even infinite, but this is good enough for demonstrating
现在我们有另一个函数,它接受一个整数N
和两个策略,并使用第一个策略进行N
次数,然后使用第二个策略进行N
次数,并根据需要继续重复。
如果N
是 0 会发生什么,我想返回一个随机策略,因为它破坏了函数的目的,但它必须最终应用特定策略。
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 的函数思想,但我也可能错了。在命令式语言中,随机函数使用各种参数(如 Java 中的时间)来确定随机数,所以我不能只插入一个/特定参数来确保我会得到哪个随机数吗?