Functional Programming in JavaScript - How to Improve Your JavaScript Programs Using Functional Techniques