Listのreverse

再帰のべんきょ
こっちのコードはコップ本から

//Scala
def reverse[T](lst: List[T]): List[T]= lst match {
  case List() => lst
  case head :: tail => reverse(tail) ::: List(head)
}
println(reverse(List(1,2,3))) //=>List(3,2,1)

末尾再帰。なってる?

//Scala
def reverse[T](lst: List[T]): List[T]={
  def reverseLoop[T](lst: List[T], reversed: List[T]): List[T]=
    lst match {
      case List() => reversed
      case head :: tail => reverseLoop( tail, List(head) ::: reversed)
  }
  reverseLoop(lst,List())
}
println(reverse(List(1,2,3))) //=>List(3,2,1)