looking at TStringList in newer versions of the compiler, I don't understand the use or "Shift, Map, Pop, reduce, Reverse etc" in that class?
This is functional programming fashion. There is hype for it, so our language must have it too. It's been added a bit to Python, to Ruby, to Java, to C#. Even C++ has been "stuffed" for many years. I wonder if they have already added monads to C++ or will they just add

Is it really that necessary? In functional languages, probably yes. For imperative languages, it's just a fashion brooch. It's like in a nouveau riche marriage: "Everyone donated to charity, so we must too. Otherwise, we will be badly perceived in our sphere"

And now no joking. There are no descriptions in the documentation for the TStringList class, nothing about what these methods really do. And they would be useful.