blob: f69663a71b16af2be5b1aeba6921ebf0bdacf370 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package s
trait Stream[+A]
case class Unfold[S,+A](s: S, f: S => Option[(A,S)]) extends Stream[A]
object Stream {
def fromList[A](a: List[A]): Stream[A] =
Unfold(a, (l:List[A]) => l.headOption.map((_,l.tail)))
}
object Test {
def main(args: Array[String]): Unit = {
val res = Stream.fromList(List(1,2,3,4))
res match { case Unfold(s, f) => f("a string!") }
}
}
|