https://medium.com/@rushikesh1s/understanding-currying-in-javascript-bfe-implement-curry-612c9e5e6fc1