3.3
Using the same idea, implement the function setHead for replacing the first element of a List with a different value.
Solution
def setHead[A](l: List[A], h: A): List[A] = l match {
case Nil => Nil
case Cons(_, tail) => Cons(h, tail)
}
Run
object Solution extends App {
import List._
println("setHead List(1,2,3,4), 0: " + List.setHead(List(1,2,3,4),0))
println("setHead List(1), 0: " + List.setHead(List(1),0))
println("setHead List(), 0: " + List.setHead(List(),0))
println("setHead Nil, 0: " + List.setHead(Nil,0))
}
Output
setHead List(1,2,3,4), 0: Cons(0,Cons(2,Cons(3,Cons(4,Nil))))
setHead List(1), 0: Cons(0,Nil)
setHead List(), 0: Nil
setHead Nil, 0: Nil