At the heart of functional thinking is to ask about the meaning of things. In the case of functions, it’s reasoning about their return values. But, that’s actually insufficient, as important as is, to give the full answer. Basically, a function is a relation between a set of inputs -a domain- and a set of outputs -a codomain- (along with a fundamental constraint: the same inputs always produces th