Sarfaraz Hussain takes us through one of the most important concepts in functional languages:

Normally we write function and it seems like below:

`def multiplySimple(a: Int, b: Int): Int = a * b`

We declare a function with all the arguments needed inside a single parameter list.

In currying however, we can split this parameter list into multiple parameter lists.

`def multiplyCurry(a: Int)(b: Int): Int = a * b`

This doesn’t seem like much, but it does lead to partial application of functions and is one method for how we can have multiple inputs in a functional programming language when mathematical functions allow one input.