Functor is an annotated function (i.e. a function_handle with named input and output arguments). Collections of functors can be automatically composed into new functors, using functor.compose and/or functor.combine
I sometimes find this useful for refactoring, debugging and design of larger programs. Trace through functor.unitTests to see what is going on.