Go has three predeclared/raw data types: bool, string, numeric (float, int64, and so on). Other data types in Go require type declarations, that is, they require we use the type keyword. Functions fall in the later category of data types along with array, struct, pointer, interface, slice, map, and channel types. In Go, functions are first-class data types, which means that can be passed around as parameters and returned as values. Functions that can take functions as arguments and return functions are called high-order functions.
We can write function factories--functions that return functions--and even function factory factories. We can also write functions that modify functions or create functions for specific purposes.
Functors: A functor is a collection of XÂ variables that can apply a function, f, over itself to create a collection of Y,...