1、修改我们的库,以纳入对有限域和有大小限制的生成器的这种穷举检查。这与其说是一个练习,不如说是一个广泛的、开放性的设计项目。
- 该任务需对库进行修改,使其能对有限域和有大小限制的生成器进行穷举检查,这是一个开放性的设计项目,没有固定答案。
- 可从以下方面入手:
- 定义相关数据类型
- 设计能体现穷举检查功能的接口和实现
- 考虑函数应满足的法则
- 最终目标是设计出能满足需求的库。
2、你需要扩展Gen的表示形式。例如,Gen 应该能够生成随机整数,也能生成从Int.MIN_VALUE到Int.MAX_VALUE的所有整数流。该行为取决于请求的测试用例数量。如果只考虑随机情况,让生成的Int依赖于String的一种方法可能是将新随机数生成器的种子设置为给定输入String的hashCode。我们如何实现这一点?
可以通过修改 Gen 接收的 RNG 值来实现。具体做法是在将 RNG 传递给 Gen<A> 的 sample 函数之前,修改其种子。例如,计算输入字符串的 hashCode ,并将其与种子值进行异或运算以生成新的 RNG 。
代码示例如下:
fun <A> genStringFn(g: Gen<A>): Gen<(String) -> A> = Gen {
State { (rng: RNG) ->
{
val (seed, rng2) = rng.nextInt()
val f: (String) -> A = { s: String ->
g.sample.run(Si

最低0.47元/天 解锁文章

1万+

被折叠的 条评论
为什么被折叠?



