This is again in spirit of learning Scala and solving S99 problems.
scala> def reverse[T](l:List[T], reversed:List[T]): Option[List[T]] = {
| l match {
| case Nil => if (reversed.nonEmpty) Some(reversed) else None
| case head::tail => reverse(tail, head::reversed)
| }
| }
reverse: [T](l: List[T], reversed: List[T])Option[List[T]]
scala> reverse(List(1,2,3), Nil)
res0: Option[List[Int]] = Some(List(3, 2, 1))
scala> reverse(List(), Nil)
res1: Option[List[Nothing]] = None
scala> reverse(List("one", "two", "three"), Nil)
res2: Option[List[String]] = Some(List(three, two, one))
scala>
As you could see I have made use of two things, learned from my last
post about "find nth element from list". My specific question is