I'd still like to see an example, but I felt inspired to show how this might be done in Scala
In Scala, parenthesis and braces are largely interchangeable, so this (lazily named) handler can easily have bigger / smaller parts.
Added in edit: this is just an example, not optimized for performance, cases where the list length is less than tree, or anything else than a super lean example.
def handler[T](list: List[T])(f: T => Unit)(g: T => Unit)(h: T => Unit) = { f(list.head) list.tail.init.map(g) h(list.last) } handler(List(1, 2, 3, 4, 5))(first => println(first)) { x => println(x * x) } (last => println(last))
Output:1
4
9
16
5
The main thing that makes this halfway decent is proper lambdas. The multiple parameter list syntax is nice for the definition, but Python could use nested functions for the definitions.In Scala, parenthesis and braces are largely interchangeable, so this (lazily named) handler can easily have bigger / smaller parts.
Added in edit: this is just an example, not optimized for performance, cases where the list length is less than tree, or anything else than a super lean example.