transform(original_list.begin(), original_list.end(), back_inserter(doubled_list), _1 * 2);
doubled_list = [x*2 for x in original_list]
doubled_list = original_list.map { |x| x*2 }
transform(original_list.begin(), original_list.end(), back_inserter(doubled_list), _1 * 2);
doubled_list = [x*2 for x in original_list]
doubled_list = original_list.map { |x| x*2 }
doubled_list = [x*2 for x in reversed(original_list)]
doubled_list = original_list.reverse.map{|x| x*2}
doubled_list = []
original_list.reverse_each { |x| doubled_list.push(x*2)}
Except, then there are five different libraries out there, and suddenly some people use one and some people use another and you run into exactly the syntactic malfeasance above – two ways of writing the same thing, both arcane.
I think standard libraries are great, and a language promoting the aspects of itself that it considers first-class objects, like Go and it's Maps and Interfaces and Golets or whatever, that's a good thing. That's my two cents. You pick a language for what it thinks is important and what your project needs. C thinks speed and power are important – in my mind, it's tailored to a programmer who would rather write his own library in 4 hours than spend 4 hours writing his own. I'm not ashamed that I'd rather search out the library.