Integer generator
Package Week2trait Generator[+t] {def generate:t}object Test extends App {val integers = new Generator[int] {val Random = new Java.util.Random () def generate = Random.nextint ()} print (Integers.generate)}
2. Boolean generator
Val bools = new Generator[boolean] {def generate = integers.generate > 0} for (I <-1 to Ten) println (bools . Generate)
3. Pair generator
Val pairs = new generator[(int, int)] {def generate = (Integers.generate, Integers.generate)} for (I <-1 to 1 0) println (pairs.generate)
4. Can be more concise, every time with new generator is very troublesome
Wouldn't it be nice if it could?
Val Booleans = for (x <-integers) yield x > 0 def pairs[t, U [t:generator[t], u:generator[u]) = for {x <- T y <-u} yield (x, y)
We know from the previous section that the For loop is not translated into Map,flatmat,filter to execute, and to define the map function with integers in the for loop
Package Week2trait Generator[+t] {self = def generate:t def map[s] (f:t = S): generator[s] = new Generator[s] {Def generate = f (self.generate)}} Object Test extends App {val integers = new Generator[int] {val random = new Java.util.Random () def generate = Ra Ndom.nextint ()} val bools = for (x <-integers) yield x > 0 println (bools.generate)}
5. The pair generator can also be generated like this
REACTIVE programming 1.4 Functional RANDOM Generators