# Expanding a Multiple Parameter List

In the following lesson, we will expand a multiple parameter list to see how a function with a multiple parameter list is executed.

## We'll cover the following

## General Form

The general form of a function with multiple parameter lists is as follows:

In the illustration above, `n`

**>1**.

The above function is equivalent to the following:

The function `f`

is taking the first `n-1`

lists of parameters and creating a new function `h`

which takes the `n`

th list of parameters. `h`

then maps the `n`

th list of parameters to the function body `Exp`

with `h`

being the function that gets returned.

The above, can also be written using anonymous functions as follows.

The above function can be further expanded:

If we do this **n** times, we would get the following:

## An Example

We will expand the `curriedSum`

function created in a previous lesson to better understand the general sequence of expansion explained above.

Just as a reminder. here is the `curriedSum`

function:

def curriedSum(x: Int)(y: Int) = x + y

Let’s start expanding!

In the first expansion `CurriedSum`

is now a function which takes a single parameter of type `Int`

and returns a function.

In conclusion, `curriedSum`

is a combination of two nested function calls. As mentioned in a previous lesson, the first function call takes a single parameter of type `Int`

and returns a function value which will be used by the second function (the function returned by the first function is the second function). The second function, in turn, takes a parameter `y`

of type `Int`

and returns the sum of `x`

and `y`

.

Let’s try to implement both functions. The first function will be known as `first`

and the second function will be known as `second`

.

For our example, `x`

= **3** and `y`

= **2**.

def first(x: Int) = (y: Int) => x+ydef second = first(3)val result = second(2)print(result)

`second`

is defined by calling `first`

and passing the value of `x`

to the first function. We can then call `second`

by passing the value of `y`

to the second function which will in turn return in the final sum, i.e. **5**.

In the next lesson, you will be asked to make your own function using the currying syntax.