Skip to main content

Command Palette

Search for a command to run...

BFE.dev | 1. implement curry() | JavaScript Problem Solving

Updated
โ€ข1 min read

Hello friends, in this article I'm going to discuss and walk through my thought process of solving the Implement curry() problem on BFE.dev.

problem link

Here's the question.

Q. Currying is a useful technique used in JavaScript applications. Please implement a curry() function, which accepts a function and return a curried one. Here is an example


const join = (a, b, c) => {
   return `${a}_${b}_${c}`
}

const curriedJoin = curry(join)

curriedJoin(1, 2, 3) // '1_2_3'

curriedJoin(1)(2, 3) // '1_2_3'

curriedJoin(1, 2)(3) // '1_2_3'

Here's the Solution:


/**
 * @param { (...args: any[]) => any } fn
 * @returns { (...args: any[]) => any }
 */

function curry(fn) {

  return function curried(...args){
     // Check if the `fn` passed have enough args or not

    if(args.length >= fn.length){
     // If there are enough args call the `fn` with the `args`

      return fn.apply(this, args)
    } 
   else{

    // Else bind the function with the remaining args and recursively return it.
        return curried.bind(this, ...args)
    }
  }
}

Conclusion

Thanks for going through the problem, I'll be adding more problems in the blog as I continue to practice, feel free to like, share & comment your feedback.

More from this blog

Sai Deepesh's Blog

8 posts

Frontend Engineer | Opensource Enthusiast