higher-order Scala functions