How does one map each item in a list iteratively with it's remaining tail? Pseudo code example:
val list = List(1,2,3,4)
list.foreach((head, tail) => println(s"head= $head, tail= $tail"))
// head= 1, tail = List(2, 3, 4)
// head= 2, tail = List(3, 4)
// head= 3, tail = List(4)
// head= 4, tail = List()