object Main extends App { //========================= def longRange(start: Long, to: Long) = new Iterator[Long] { private var i = start def hasNext = { i < to } def next() = { val r = i i += 1 r } } val lol = longRange(0, Long.MaxValue) map (x => x * x) lol drop 5 take 5 foreach println //========================= }