- Basic level examples (API)
- Middle examples (Classics)
- High level examples (???)
Tech: "Tying the knot"
professianality = Stream[Stream[...]]
professianality = {x: Stream(over x/y); y:Stream(over x/y)}
Advanced Scala Chapters: Streams
Example #1: Simple Period
object Demo extends App {
def sieve(s: Stream[Int]): Stream[Int] =
s.head #:: sieve (s.tail filter (_ % s.head != 0))
sieve (Stream.from(2)) take 10 foreach println
}
Example #2: Fibonacci
// >> 0 1 1 2 3 5 8 13 21 34
object Demo01_fib extends App {
val fib: Stream[Int] =
0 #:: 1 #:: ((fib zip fib.tail) map {case (a, b) => a + b})
println((fib take 10).foldLeft("")(_ + " " + _))
}
Example #3: Sieve of Erathosphenes
object Demo extends App {
def sieve(s: Stream[Int]): Stream[Int] =
s.head #:: sieve (s.tail filter (_ % s.head != 0))
sieve (Stream.from(2)) take 10 foreach println
}
Example #4: Paskal Triangle
object Demo extends App {
def sieve(s: Stream[Int]): Stream[Int] =
s.head #:: sieve (s.tail filter (_ % s.head != 0))
sieve (Stream.from(2)) take 10 foreach println
}
Example #5: SQRT Stream
object Demo extends App {
def sieve(s: Stream[Int]): Stream[Int] =
s.head #:: sieve (s.tail filter (_ % s.head != 0))
sieve (Stream.from(2)) take 10 foreach println
}