A powerful feature of Haskell (as with all functional programming) is that functions are
first class. What the first class status of functions means is that functions are themselves
simply values. Just as you might pass an integer as an argument to a function, in Haskell
you can pass another function to a function. To a limited extent, you can do the same
with function pointers in a language like C, but Haskell is far more versatile.