The first time I came across first-class functions, I thought it was a pretty strange concept. Passing a function as a parameter to another function?
sounds like an anonymous call
Storing a function in a variable?
sounds like delegation
Getting a function as the return value from another function?
sounds like wrapping
The way I've wrapped my head around is by keeping in mind that functions themselves
are data. It's just that instead of representing some discrete piece of information like an integer, a floating point value or a string, it represents a sequence of instructions to be executed.