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