Functional Programming in JavaScript: How to improve your JavaScript programs using functional techniques