3.9
Compute the length of a list using foldRight.
def length[A](as: List[A]): Int
Solution
def length[A](as: List[A]): Int = {
foldRight(as, 0)((_, a) => a + 1)
}
def foldRight[A,B](as: List[A], z: B)(f: (A, B) => B): B =
as match {
case Nil => z
case Cons(x, xs) => f(x, foldRight(xs, z)(f))
}
Run
object Solution extends App {
import List._
println("length List(1,2,3): " + length(List(1,2,3)))
println("length List(1): " + length(List(1)))
println("length List(): " + length(List()))
println("length Nil: " + length(Nil))
}
Output
length List(1,2,3): 3
length List(1): 1
length List(): 0
length Nil: 0