https://code.tutsplus.com/courses/learn-functional-programming-in-javascript/lessons/conclusion