函数式状态处理:从随机数生成到状态机构建
1. 通用状态处理 API
在处理随机整数列表生成时,我们可以定义如下函数:
Function<Integer, Random<List<Integer>>> integersRnd = length -> sequence(List.fill(length, () -> intRnd));这里的类型不再是Random<Integer>,因为需要处理一个额外的int参数来表示列表的期望长度。
将这个实现与之前的解决方案进行对比:
public static Tuple<List<Integer>, RNG> integers(RNG rng, int length) { Tuple<List<Tuple<Integer, RNG>>, RNG> result = List.range(0, length) .foldLeft(new Tuple<>(List.list(), rng), tuple -> i -> { Tuple<Integer, RNG> t = integer(tuple._2); return new Tuple<>(tuple._1.c