Chaining higher-order functions