https://medium.com/@diwasb54/functional-programming-fp-vs-object-oriented-programming-oop-5fcfbc1d98ff