```scala def foo[A, B](as: List[A], b: B, ab: A => B, bbb: B => B => B): B = as.foldLeft(b)((b, a) => bbb(b)(ab(a))) ```