標準入力をリストみたいに扱う

Scala では Console.readLine などを使うことで、標準入力を読み出せます。

val line = readLine
println(line)

一方、すべての行を読み出す場合は Stream を使うと、Scala らしく書けました。

val lines = {
  def tail: Stream[String] = readLine match {
    case null => Stream.empty
    case line => Stream.cons(line, tail)
  }
  tail
}

lines foreach println