What is a higher order function in Scala