See HigherOrderFunction, CommonHigherOrderFunctions, FunctorObject