diff options
author | Carlo Zancanaro <carlo@zancanaro.id.au> | 2015-06-01 11:41:16 +1000 |
---|---|---|
committer | Carlo Zancanaro <carlo@zancanaro.id.au> | 2015-06-01 11:41:16 +1000 |
commit | 8187f024bae57267af514c5dcb730de09e573e41 (patch) | |
tree | cba17e2e770de4972f57b60cdd443248fd68c458 /src/main/java/au/id/zancanaro/Generator.java | |
parent | edfce37bc21699042baf14ad6d172d3187fe530c (diff) |
Move packages, make lists shrink in size, generate lists instead of arrays as the 'primitive' operation (issues with generics)
Diffstat (limited to 'src/main/java/au/id/zancanaro/Generator.java')
-rw-r--r-- | src/main/java/au/id/zancanaro/Generator.java | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/src/main/java/au/id/zancanaro/Generator.java b/src/main/java/au/id/zancanaro/Generator.java deleted file mode 100644 index 1c948af..0000000 --- a/src/main/java/au/id/zancanaro/Generator.java +++ /dev/null @@ -1,35 +0,0 @@ -package au.id.zancanaro; - -import java.util.Random; -import java.util.function.Function; - -public interface Generator<T> { - RoseTree<T> generate(Random random, int size); - - static <T> Generator<T> pure(T value) { - return (random, size) -> RoseTree.pure(value); - } - - @SafeVarargs - static <T> Generator<T[]> tuple(Generator<T>... generators) { - return (random, size) -> { - @SuppressWarnings("unchecked") - RoseTree<T>[] result = (RoseTree<T>[]) new RoseTree[generators.length]; - int index = 0; - for (Generator<T> generator : generators) { - result[index++] = generator.generate(random, size); - } - return RoseTree.zip(Function.identity(), result); - }; - } - - default <R> Generator<R> fmap(Function<T, R> f) { - return (random, size) -> this.generate(random, size).fmap(f); - } - - default <R> Generator<R> flatMap(Function<T, Generator<R>> action) { - return (random, size) -> { - return RoseTree.join(this.generate(random, size).fmap(action).fmap(g -> g.generate(random, size))); - }; - } -} |