Difficulty: 5/10currying techniques, higher-order functions, function arityWe can curry a function either manually, using recursion, bind method, reduce method or lodash utility1manually2recursions3bind method4reduce method5lodash utilityScenario Questions0-2 years experience1How would you write a simple curry helper that turns a binary function add(a, b) into addCurried(a)(b)?2If you call your curried function with only the first argument, what does it return and why?3What happens if you pass three arguments to a curried function that was designed for two?Follow-up QuestionsCan you walk me through the closure that your curry function creates?How does your implementation preserve the original function's `this` binding?What are the performance implications of using `Function.prototype.bind` versus a manual closure?Suggest Improvement