https://medium.com/better-programming/functional-programming-currying-vs-partial-application-53b8b05c73e3